How about putting it on `EntityInternal.toMetadataRecord()` (and we have it on `LocationInternal`)? Nothing will currently call it on other types of entity, but seems reasonable to have it there.

In two minds about `MetadataRecordAdaptable`. Currently the `LocationUsage` and `ApplicationUsage` are different so code needs to know it's dealing with a location or an app. So shared interface not necessary (yet).

Note they are different because a location only knows about which app it's associated with in the subsequent "events", so the constructor args to LocationUsage and ApplicationUsage are very different.