Add AugmentedEntity.buildDiff() code, with unit tests.

Another step along the way to editing contacts, this change
implements building the ContentProviderOperations needed
to "diff" an existing Entity to match an edited state.

Most work is done by AugmentedValues.buildDiff(), which
builds the insert, update, or delete operation needed to
match its internal "after" state.  AugmentedEntity builds
up the list of all operations from its direct values and
any children.

When changes are made, an "enforcement" action is added to
verify that the RawContacts.VERSION matches the "before"
Entity.  If this test fails, someone else (probably a sync)
has touched the Contact, and our entire operation is rolled
back, allowing us to re-read the base Entity and retry.

This approach also handles inserting an entirely new
RawContact, which removes the need for separate create() and
save() methods in our edit UI.

Finally, two batches of unit tests have been added.  The
first batch verifies the Parcel'ing of AugmentedEntity
objects, which is used across configuration changes, and
when applying changes over a re-read Entity.  The second
batch verifies the expected ContentProviderOperations that
various buildDiff() calls should produce.
6 files changed