BREAKING CHANGE: baseline data and async data is no longer cached on the client and instead provided through file references. To this end, the data access through scan_item.data has been generalized. Live data (i.e. monitored data) is now accessible through scan_item.live_data
To have a better separation of concern between messages and how they are conveyed in connectors.
BECMessage can be simple dataclasses, leaving the serialization to the connector which transport those.
The serialization module itself can be isolated, and in the case of msgpack it can be extended to
understand how to encode/decode BECMessage, to simplify writing code like with BundleMessage or to
be able to automatically encode numpy or BECStatus objects.
Finally, client objects (producers and consumers) can receive BECMessage objects instead of having
to dump or load themselves.