Clean up user/permission contexts

There's currently a weird mix of `flask.ext.login.current_user` and `g.identity`, where each purports to identify the current user, but both may not be set depending on the authentication mechanism.

This should get sorted out and the expectations documented in the developer section.  This will let developers reliably determine the current user, how that user was authenticated, and what actions are permitted.