Consider to also return the AuthInfo from the providers

In the current implementation we do not return the `AuthInfo` from the providers, instead the providers stores the information after a successful authentication. I think this is a problem if a user uses a relational database with referential integrity to store the data, because the authentication information gets stored before the user will be stored. Maybe we should also return the `AuthInfo` from the provider and then delegate the storage of the data to the user.

What do you think @fernandoacorreia?