Make token refresher init itself lazily (#5106)
* Make token refresher init itself lazily
It needs a network connection to do the init, so this would fail if
a client tried to do it at startup with no internet, causing the token
to just never be refreshed.
This just changes the API (compatibly) to do the init lazily.
The promise is kept is retain backwards compat, it can be removed
later.
* Make deviceId protected
* Fix tests