Use email instead of username for account logins

The code gets confusing pretty quickly when you call .username on an
object and actually get back an email address. Since
passport-local-mongoose allows the value to be configured, it makes
sense to take advantage of that.
Add name field to registration pages

The name field will make it easier to refer to other users rather than
having to use their email address all the time.
Switch to role based permissions

Rather than having an object on the permissions model which contains the
list of abilities and boolean flags enabling them, we simply give each
permission row a 'role' attribute. This is then checked in the code
using the connect-roles module.

The advantage of doing it this way is that we can freely add new
abilities without having to go through the database and update
permission rows to reflect them. Similarly we can add new roles if
needed and then define the abilities for those roles in the code.
Refactor the admin app so it doesn't need to be called
Initial pass at getting real data into admin panel

This now shows the existing permissions in the database but doesn't
allow you to edit them or add new ones currently.
Initial working version of admin changing

This uses a form which is then going to be progressivly enhanced with
some javascript.
Put authorization middleware after passport

This middleware needs to run immediately after the passport middleware
so that it can configure the helper that are needed in subsequent
routes.
Working user admin page

This is the progressivly enhanced version of the user accounts page. It
uses javascript to update the users role, or alternatively remove them
from the instance entirely.
add legacy account upgrade so I can access it for dev
coded and styled static HTML upgrade account screen
added user controls header with styling
Add missing validation message for unknown user

When we don't have a user make sure a validation message is set to
prevent the server from crashing.