Introduce a model to abstract SCM service integration

[finishes #80208778]
It's not available in Template models nor in view templates (there are no views in the API).  In the current incarnation of Panamax, no user information is actually stored until the user attempts to save a template to some remote SCM service, i.e. GitHub.  At that point, we are able to use the api_key to retrieve the emails, username, and available repositories for the user.  There aren't many places where the user is serialized, but in those cases, we want all three bits of info present on the User model, and there *shouldn't* be any place where one of these three resources is accessed multiple times in a single request.