[Mac] Initial implementation of immersive fullscreen.

This change lets the toolbar hide and show automatically in fullscreen
by adding a Mac implementation of ImmersiveModeController. It's
temporarily guarded by a flag because some things need to be finished
before this launches:

- Support the toolbar always being visible.
- Don't hide the toolbar when a bubble or other child window opens.

Other things would be nice to have but may not block launch:

- Animation.
- Native toolbar support (or another approach that hides the title bar.)

The changes in -[RenderWidgetHostViewCocoa shouldIgnoreMouseEvent:]
cause it to ignore mouse events which don't hit test to the view's own
subtree, and to clear the cursor when ignoring a mouse event. (tracking
areas don't call |hitTest:|; they produce events in their bounds
regardless of hit testing/overlapping views.) This way, when the mouse
cursor is over the ImmersiveToolbarOverlayView, which overlaps the
RenderWidgetHostViewCocoa, it won't change the cursor, set tooltips, or
send events to its renderer.

Includes pair programming with lgrey@chromium.org.

Bug: 868398
Change-Id: Ia88544a1c8cd4743e4e84a6582765df9c8390c2c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1427799
Commit-Queue: Sidney San Martín <sdy@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#643000}
16 files changed