Add ngeo-layercatalog directive to ngeo core

This PR adds an `ngeo-layercatalog` widget component to ngeo. The `layercatalog` example is modified to use that component rather than implementing its own.

The `ngeo-layercatalog` component is composed of two directives: `ngeo-layercatalog` and `ngeo-layercatalognode`. The latter is used by the former.

An application using `ngeo-layercatalog` is responsible for providing a layer factory function. That function is called by the `ngeo-layercatalognode` directive to get an OpenLayers layer from a tree node.

This layer factory is specified by creating an `ngeoLayercatalogLayerFactory` service in the application. See the `layercatalog` example to see how this is done.

The `ngeo-layercatalog` and `ngeo-layercatalognode` directives use partials (`templateUrl`). There is a default partial for each directive in ngeo. These partials can be overridden in the application, by providing `ngeoLayercatalogTemplateUrl` and/or `ngeoLayercatalognodeTemplateUrl` services.

Also, this work addresses #113, partially at least. For `ngeo.js` a template cache is generated at build time by a Makefile rule. This is based on a Mako template: `templatecache.mako.js`.
Interesting: I didn't know it was possible to deregister watchers! :)