util: Add ChangeCounter class.
Name, KeyLocator, etc. (internal): Add support for getChangeCount using a ChangeCounter where needed to track changes to child objects.
Data (internal): Remove internal use of onChanged. Add support for getChangeCount using a ChangeCounter to track changes to child objects. In getDefaultWireEncoding, use getChangeCount to clear the default wire encoding if the Data object changes.