more hooks for authenticators

Allow authenticators to:

- register custom handlers
- change login and logout URLs
- replace the entire login form

This appears to be enough to get oauth working,
with [this gist](https://gist.github.com/minrk/b823f6d0465c9a00fede)
derived from [Kyle's example](https://github.com/rgbkrk/gitorn).