Adds Google Oauth2 authentication

This is a WIP branch to add Google Oauth2 integration to the application. It attempts to mimic the manner in which GitHub is integrated and as a result causes some duplication of code. In its current state Google Oauth does work once you have the client key and secret configured.

I created this PR to try to get feedback and some help to finish this off