Only update native location if received measurement is GPS.

Otherwise we take a performance hit because we are updating the Android
location every time a measurement is received from the VI.
Store timestamp in VehicleMessage as Long, the type we want.

I'm not sure the lineage of storing as a Double, but we always interact
with it as a Long, and we incur a bit of overhead if we are constantly
converting back and forth.
Don't look up vehicle measurements if native location updates are off.
Cache MessageKey after creating in KeyedMessage types.
Cache hashcode of map after calculating once.
Remove redundant double-synchronization from message listener maps.
Add a note about potentially caching measurement constructors.
Only refresh simple message list in Enabler if values change.
Cache the pretty name of a signal retreived from the app resources.
Optimize MessageKey equality check by using pre-calculated hash code.
Share a static SimpleDateFormat for message adapters.
Don't update dashboard view unless user can actually see it.

No reason to take the performance hit if it's not visible.
Don't update CAN message list view until the user can see it.