Allow custom storage service to have its own constructor signature

As @Gnucki pointed out half a year ago (FriendsOfSymfony/FOSOAuthServerBundle/pull/163): The fact that the definition of the fos_oauth_server.storage service was asked in the extension object forbade the use of a service defined in another bundle.

Also, the FOSOAuthServerExtension sets the configured userProvider as the 4th argument of the storage service. 
This doesn't make sense when using a custom storage service as it fixes the constructor signature.

This PR is a cleanup + rebase of the old PR