OverviewMap control

This replaces both the old #822 and #2444.

The following fixes were made so far:

 - (enhancement - fixed) use map `postrender` instead of view `resolution`, `center` and `rotation` property changes, as suggested by @tonio.  The small box doesn't follow the animation of the map (i.e. while doing a pan/zoom), because the extent of the main map is always the same while animating, i.e. is equal to the end result.  More about this.
 - (bug - fixed) listen to the map view change and act accordingly, as suggested by @elemoine and @tschaub .
 - (bug - fixed) defining the control with `maximized: false` no longer works
 - (task - fixed) follow the new button structure
 - (task - fixed) add a 'collapsible' option, as the attributions control, to allow the control to be drawn without a button

What's remaining to do, which includes all comments from #822 and #2444, in my personal order of priority :

 - (enhancement, requires #2735) use map corners instead of the extent as a way to get draw the box to allow it to animate smoothly while the map is animating.
 - (task) add tests
 - (task) support dragging the box to change the main map view (it would be really nice to have this)
 - (enhancement) support rotating the box instead of overview map (this could be left undone for now)
Use `goog.isDef` here. A number cannot be `null` by definition. See https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=fr#nonnull.