Implement MVCC.  Of a sort.

This is used for client-side conflict detection when building a
client-side identify map.  In EventSearch's case, it's also used for
server-side conflict detection.

I want to deduplicate records client-side for the following reasons:

1. The study locations sidebar assumes that sort of identity map is in
   place, and I don't feel like adding more code to special-case it.
2. The event types embedded in an event search really are the _same_
   event types that you'd get from a GET /api/v1/event_types.  The same
   statement applies to other event search-associated entities.

To deduplicate, then, we must have some strategy for checking if we
alrady have an incoming record.  This in turn means that we must be
prepared for the possibility that the incoming record will have the same
type and ID but not the same content.

Now, for half of our models, the mvcc attribute is nil.  (Read:
worthless.)  However, neither StudyLocation nor DataCollector have
meaningful versioning information.