In the future, this will make it much easier to refactor into a
library.
The plan is to allow Agent to have subsystems, but only those which are
related to managing peer-to-peer message and not application-specific
stuff. For example, wemight have a MeshRouting subsystem that listens
for messages and conditionally forwards them based on the content of the
message.