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.

I realized this when I was working on this code.

> 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.

Just one thing: in some cases the listener may actually be the only one knowing the old state. It depends if "old" is relative to the listener, or to the object we listen on. This is why I'm not totally convinced right now that passing the old value to the listener would be that useful.