bug 1063621 - Add basic changesets

The basic changeset is auto-created and auto-completed, mostly invisible
to the API client.  The next changeset is the intentionally created
changeset, which remains incomplete until the API client closes it.

- model, serializer, cache, and viewset for changesets
- AutoUserField to default to the request user
- OptionalIntegerField for the target_resource_id
- Swap history_changeset for history_user in historical records
- Create changeset automatically in middleware (will load existing
  changesets later)
bug 1063621 - Add multiple action changesets

Adding ?changeset=<changeset_id> to a request says 'Reuse this
changeset'.  The changeset must not be closed and must be the
same as the requesting user.

Also, improved cached representation of datetimes (to avoid rounding
issues in Python 3), and added helper test method to convert datetimes
to JSON represenation.
bug 1063621 - Delay cache refresh in changesets

When the changeset is closed, the cache for changed resources will be
updated.

Also, removed mock requirement from requirements.dev.txt, since already
in requirements.txt
fix bug 1063621 - Use changesets in load scripts

Refactored some common code into tools/client.py