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'