Provider

Implement most functionality of `gettextCatalog` as a provider. This allows clients to inject `gettextCatalogProvider` into the `config` phase of Angular's lifecycle. 
We don't broadcast in the provider because $rootScope isn't available yet in the `.config` phase, and I don't think broadcasting makes much sense early on anyway. In the gettextCatalog service, we override `setCurrentLanguage` and `setStrings` to do the broadcast.