Social login

This PR still requires documentation and tests. I am creating it so Les can provide early feedback on the design.