Reorganize user authenticationo

This supports two types of authentication: browserid and external.

External authentication now only requires authentication of
`/userauth/login`.

Note that, for the moment, this breaks oAuth2.
Use Flask category as the Alertify type

In particular, this allows flash('oh noes', 'error') to appear in red.

This closes #4.
Support roles better

Add some nice syntax, along with tests and docs, for specifying roles
and permissions with Flask-Principal
add a 'get' method
rename roles to actions

This gives a more granular permissions model and maps better to what
users are and are not allowed to do.
Merge branch 'roles'
tests for actions.get
Refactor testing to allow specialization of TestContexts
Implement a basic, stubbed-out token auth
Refactor auth/authz into more blueprints

This helps to separate things out and keep modules short.

Beyond factoring into blueprints, this also moves many top-level modules
to relengapi.lib, where they are out of the way of the dynamically
generated relengapi module's attributes.
use Flask's jsonifier
Verify that test context actions actually exist

Plus better documentation
add a client.post_json method to tests
Store tokens in the DB

Plus tests and documentation
Merge branch 'tokenauth'
add tokenauth static dir to sdists
Temporarily remove OAuth support

This is currently broken, and unnecessary at the moment.  It's here in
version-control history for whenever it's required!

Closes #5.
Support root-page widgets supplied from blueprints.

This adds boxes for authentication and documentation. Fixes #3.
Merge branch 'issue3'
fix account links

Fixes #41.