Directives refactoring

This is a major refactoring for the directives.

* The directives are now configured with two attributes: `map` and `options`. For example:

 ```
  <div ga-background-layer-selector
         ga-background-layer-selector-map="map"
         ga-background-layer-selector-options="options"></div>
 ```

* Every directive now have its own isolated scope. This is recommended for "widget" type directives.
* The context menu directive is now a real child of the map directive - it shares states/variables with the map directive through a controller.

Please review.