store credential in property

It seems kinda inappropriate to let the user handle the credential all on his own. Keeping it inside the client-object allows easy access to all its properties, especially the refresh-token.

The code additionally persists the credential using the existing methods in a custom setter, deleting it when it is set to `nil`, and tries to find a persisted credential in the custom getter.

Checking the persisted credential for expiration and returning `nil` in that case was something I thought of, but as the refresh-token could still be valid and there would be no other way of obtaining it, I decided against it.