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`.
This will work. But I think it is a good practice to create application-specific directives wrapping ngeo directives. If you use the main controller for everything then your main controller will quickly look like a big bowl of mud. By using application-specific directives and isolate scopes we can avoid this problem. This is also the approach recommended in http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html, for which we have a link in the guidelines already.