Cleanup views a bit

* move exceptions views to views/errors.py
* put auth views into a class just like base views
* move admin permission to @view_defaults in base views, so all views need admin