Password expiration

* Moves password checking code into a separate app devoted to the content editor interface
* Effectively extends the user model via a one-to-one relationship, which adds a password expiration time
* When a user changes password (through the existing form), that password expiration time is reset
* All admin pages (excepting a whitelist) are wrapped in a check that the user's password hasn't expired. If it has, they are redirected to the password setting form

Note that while working on this ticket, I discovered that the password checks built into the admin form can be circumvented by hitting a different url. I'll open a separate task for that.