ahat: Improve field diffing.

* Factor field diffing code out of Diff into its own class.
* Switch to a new interface for diffing fields that does not rely on
  being passed mutable lists.
* Reimplement field diff to work better when fields have been added,
  deleted, or reordered.

Bug: 62408050
Test: m ahat-test, with new tests for field diff added.
Change-Id: I56c0414f8f4c11809895d809494d752201d33563
12 files changed