Add authenticate retry logic to RestClient

* re-auth attempted if response is 403
* only a single thread will attempt to re-authenticate