Support for shared invalidator client IDs

Allow the Java side of the Andorid invalidations implementation to share
its client ID with its associated C++ classes.

The InvalidationController class will prefer to use an ID from a provided
UniqueIdentificationGeneratorFactory.  This ID would have the advantage of
persisting across restarts, which is necessary to ensure effective reflection
blocking.

If the UniqueIdentificationGeneratorFactory has not been provided, as may be
the case in tests, the InvalidationController will generate its own temporary
ID.  This will effectievely disable reflection blocking, but it's better than
returning a consistent ID (since that would risk blocking notifications that we
actually need).  This randomly generated ID is not much different from the
randomly generated ID created by the InvalidationService prior to this CL.

At the time of this writing, the code to set up the
UniqueIDGeneratorFactory is not in place.  This will be added in a later
commit.  Until then, reflection blocking will remain broken.

BUG=172391

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234524 0039d316-1c4b-4281-b951-d872f2087c98
[ash] Disalbe multi-level overflow bubble

Problem:
  When shelf can contain only one item (overflow button) due to very small size of shelf,
  Overflow bubble contains overflow button, too.

I think above behavior is strange because overflow bubble can scroll to naviagate all
hidden items. This multi-level overflow bubble is created becase of is_overflow_mode()
only checks the first index of item. When shelf size is small, ShelfView in bubble is
considered not in overflow mode.

R=jamescook@chromium.org
BUG=316745
TEST=visual test

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

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