Google JWT auth

* use oauth2 service accounts for auth: https://developers.google.com/accounts/docs/OAuth2ServiceAccount
* use an Auth class to encapsulate the fetching of the key and access_token