The difference between angular service, factory and provider when declaring as an
injectable argument.
Services
When declaring serviceName as an injectable argument you will get a reference
to the actual function passed to module.service(…).
Factories
When declaring factoryName as an injectable argument you will get the value
that is returned by invoking the function reference passed to
module.factory(…).
Providers
When declaring providerName as an injectable argument you will get the value
that is returned by invoking the $get method of the function
reference passed to module.provider(…).