Remove an unused return value from the VehicleDataSink.receive method.
Remove a resolved TODO.
Remove unused constructors for messages that take extras.

Use the setExtras setter.
Consider exact key matchers with same key as equal, all others unequal.
Start to refactor how to register for message notifications on keys.
Remove a resolved TODO.
Raise an exception if JSON has no recognized fields, not even extras.
Include diagnostic request frequency in equality comparison.
Don't start trace file playback until a callback is ready to receive.
Move more interface tests to run with Robolectric in JVM.
Remove a resolved TODO.
Check inequalities for DiagnosticResponse.
Test diag responses with no payload.
Test diagnostic responses with and without a value.
Test comparing diagnotic responses with a parsed value.
Use the value of negative response code to indicate success or failure.
Don't bother sending last known value to new listeners.

This is adding too much complexity as we add new message types. It's up
to the application to request a message synchronously if it needs the
value on startup.
Register for notifications based on message keys.

Added hashCode for MessageKey and KeyMatcher so they work as expected as
Map keys.
Remove test case that is no longer valid.
Fix propagating generic VehicleMessages to listeners.