Refactor the User Authorization flow.

Creates a new interface, AuthorizationMethod, for the creation of user authorization methods. Also updates the existing Core authorization method to utilize the AuthorizationMethod interface, and adds an OAuth2 Authorization Grant Authorization Method as well.