Allow the user to avoid the local plist storage for refreshToken + correct download approach

* We need to let the developer choose when to refresh and when and where to save the refreshToken - as an alternative to using the plist storage.
* Download should always be performed to disk, not to memory!

I do not know how to build this framework, there's no build script. So someone else will have to do that.