Provider

Implement most functionality of `gettextCatalog` as a provider. This allows clients to inject `gettextCatalogProvider` into the `config` phase of Angular's lifecycle. 
In an Angular provider definition, `this` is the provider. So when we extend `this` we're adding fields onto the provider. `this.$get` is a special function that returns the service. The service is just the provider plus some extra functions that don't make sense in the provider since services like `$http` aren't available yet.