Implementing caching of tokens obtained to bring in line with node client

* useCache (default=true) is a new param on `obtainNewToken`
* if set, it will put new tokens obtained from persona into redis and check redis each time a new token is requested, expiring 60s before the token expiry
* as with the node client, this allows us to be chatty to the client in our code but not hassle persona (slow)