Ported the ChangeTracker classes.

The ChangeTracker classes were brought over with a combination of
hand-written code plus sharpened code (some of which was
refactored).