[feature] Add ability to disable a user account

# Purpose

This PR adds the ability to disable a user's account, in response to a support request. It does not surface this functionality to the frontend, and accounts must be disabled through the shell.

The disable an account:

```python
user = User.load("abcde")
user.is_disabled = True
user.save()
```

# Changes

* Adds a database field `date_disabled` to the User model
* Adds a property `is_disabled` to the User model
* Refactors `User.is_active()` to a property method (`User.is_active`)
* Adds a new exception type, `framework.auth.exceptions.LoginDisabledError`

# Side Effects

* Disabled users do not show up in search.
* Disabled users cannot log in
* The profile page for a disabled user returns HTTP 410 (GONE)