[Android] Allow text handles to observe position of "parent" view

This adds the class PositionObserver. This class provides a way to
listen for changes to the position of a particular view (and to query
that views current position).

Then, HandleView is updated to use a PositionObserver to keep its
PopupWindow's position up-to-date with the logical "parent" view (
HandleView is logically a child of some other view, but has to use
a PopupWindow outside of the logical parent's view hierarchy).

This is similar to, and influenced by, Android's Editor.java
(https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r3.1/core/java/android/widget/Editor.java).

BUG=b/10562149

Review URL: https://codereview.chromium.org/24449007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228594 0039d316-1c4b-4281-b951-d872f2087c98
Attempt 2: Refactor LauncherItemController and LauncherItemDelegate

Previous CL was reverted (https://codereview.chromium.org/23606016/) because LauncherItemDelegateManager holds destoryed LauncherModel pointer (in win7_aura trybot).
To handle this, destroy LauncherItemDelegateManager and recreates a new one with new LauncherModel.

Original description.

* LauncherItemController subclasses LauncherItemDelegate
* Register/Unregister when LauncherItemDelegate is created/removed
* LauncherItemDelegateManager handles LauncherItemDelegate by LauncherID
* LauncherItemDelegateManager take ownership of all LauncherItemDelegate

R=sky@chromium.org, skuhne@chromium.org
BUG=279105
TEST=unit_tests, browser_tests, ash_unittests, ash_shell

Review URL: https://codereview.chromium.org/25823002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228595 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 228595