Create the routes, views, forms, and templates for associating an account with an external OAuth provider, starting with GitHub as a first.
Use GitHub's OAuth flow to ensure the user has authenticated on GitHub and return their user id and username back to warehouse, storing an association.
Allow the user to also remove their existing association.
Should also send an email, like other security-related operations, letting the account holder know this has happened, and add events to their user activity.