ChangeReubilder will batch events together up to a maximum window size
of 3 seconds (MAX_WINDOW_MS). This means that entities from the end of
the window might have a timestamp in NoteDb up to 3 seconds earlier
than the original timestamp in ReviewDb. This can't be accounted for
by simply rounding the timestamp, as the amount we would have to
subtract actually depends on *other* entities in the database.
Instead, don't emit diffs if two timestamps are within the constant
defined in ChangeRebuilder.
This requires a different implementation of diffing ChangeMessages,
since there is no longer a concept of normalizing timestamps. Instead
we just ort the input list and try to pair them up. This may result
in difficult to read diffs if somehow the relative timestamps got
swapped, but we don't think this is a very common class of bugs.
Change-Id: Ie226123739b91a3c4d47b50115d1f033221ae28f