Some stores may want not to implement chat history operations.
Allow to query the network ID and entity from the message ID regardless of the underlying store used.
This allows for other implementations that aren't based on a filesystem.
Introduce a messageStore type, which will allow for multiple implementations (e.g. in the DB or in-memory instead of on-disk). The message store is per-user so that we don't need to deal with locking and it's easier to implement per-user limits.