Remove a large amount of plumbing in UI compositor

This patch removes a large amount of extra plumbing. For example, the
layout manager previously added observers to the tabs and tab models
to proxy the events to the layout, which would then proxy them to
various scene overlays. Each class already has access to the tab model
selector, so this patch opts to have each class implement its own
observers for the methods it needs rather than doing all the plumbing.

The result of this is an API that matches many of the existing
observers instead of inventing new ones and slightly renaming them. In
general this is less confusing to reason about.

This is the first of a couple of patches like this.

Bug: 882508
Change-Id: Ic67644be9c3fa5736cef584aa4243c90019ee30b
Reviewed-on: https://chromium-review.googlesource.com/1219928
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590835}
9 files changed