It's crucial that the data layer has full control over how entities are
(de)serialized.
Do not leave this choice up to the domain layer by defining an enum as a
raw value type, because any change in the enum raw value would literally
be a disaster, i.e. _any_ serialized data would break instantly.
* Make specific message levels a default extension
* Define Loggable protocol
* Keep track of message originator metadata
* Fix tracing of Core Data logs
* Log query on entity not found