Add a "map" property to ol.control.Control (RFC)

As [reported](https://groups.google.com/d/msg/ol3-dev/Gxb3_Ab8NfU/7ORplUExxUYJ) on the mailing list there's no (`change:map`) event triggered when a control is added to, or removed from, the map.

Overlays, on the other hand, do generate `change:map` (and `propertychange`) events when `setMap` is called. "map" is indeed an `ol.Object` property of `ol.Overlay`.

This PR adds a "map" `ol.Object` property to `ol.control.Control`. I'm creating it as an RFC.

With this PR specific controls (subclasses of `ol.control.Control`) need to override `mapChanged` rather than `setMap` to be notified when the control is added to, or removed from, the map.

What I like about this change:

* Events are emitted when controls are added to/removed from the map.
* More consistency between `ol.Overlay` and `ol.control.Control`.

What I like less:

* `mapChanged` may not be as natural as `setMap` for people creating custom controls.
I *think* this is the first case where we store two references to an `ol.Object` property on the same object in order to get around the lack of arguments provided to property change listeners.

Alternatives:

 * listen for `beforepropertychange` and clean up there
 * add old/new values to arguments passed to `propertychange` and `change:foo` listeners
 * do nothing

Do nothing means we continue to require that listeners maintain extra state to make use of our events.  I understand if the second alternative is outside the scope of this change.  But it would make me feel better if we agreed the library could be made more useful in this respect.