Allow creating map directive extensions

This PR adds a controller to the map directive. That controller allows to create custom/application-specific map directives that `require` an ngeo map directive (`geo-map`).

This can be useful for implementing map extensions, a map extension that updates the browser URL (permalink) as the map view states change for example.

Thoughts?
Instead of having namespaces with dots and namespaces with underscores we could use namespaces with dots only. So, in the case of `directives/map.js`, we'd have

```js
goog.provide('ngeo.MapDirective');
goog.provide('ngeo.MapDirectiveController');
```

which would make things more consistent.