Export 003

closes #3284

- ensure token tables aren't exported
- cleanup filename
- failed export throws internal server error
Merge pull request #3327 from ErisDS/issue-3284

Export 003
Added /roles/ API endpoint

Closes #3196

* adds `/roles/` endpoint
* gets the current user as context
* gets all the available roles (should "Owner" be filtered out?)
* optional parameter: `permission=assign`. Gets all roles authenticated user could assign
* if we're not signed in, gives a "please sign in" (standard) error
* if we're signed in, but user is not in the context, gives a "there was no user in the context" error
* if the user is an "Author", gives a "there are no available roles to assign" error
* updated `when.js` to version `3.4.1`. Needed because of the `when.filter` call
* added extra fixtures to `permissions.json`. Might need a migration.

Caveats:

* there are no tests
* for some reason the setup functional test was failing for me locally
hannah's fixup thing
Closes #3196

adds /roles/ endpoint, currently there are no other parameters to pass
gets the current user as context
filters available roles according to current user's roles' and only returns the ones that the current user would have permission to assign
if we're not signed in, gives a "please sign in" (standard) error
if we're signed in, but user is not in the context, gives a "there was no user in the context" error
if the user is an "Author", gives a "there are no available roles to assign" error
Caveats:

hacky implementation of the filter, at some point it should be solved with canThis
there are no tests
for some reason the setup functional test was failing for me locally