[SCHEMA] Simplify transaction log construction.

Instead of storing an ORM-derived 'delta', only store a snapshot of the API
representation of the versioned object. This reduces the volume of data we
store, makes constructing the transaction faster, and removes a bunch of
complexity left over from when we were trying to infer syncback actions from
the transaction log.
Minimally implement persistent greenlet-local S3 connections.
More efficiently update contacts from messages.