Add addControl and removeControl methods to the map

This PR adds addControl and removeControl methods to the map. And the map now has a collection of controls.

[NEED UPDATE I'll provide more details on why I'd like to introduce these changes]