I reduced the socket IO tasks to mere message forwarders. The algorithm
complexity lies in stage modules. Example: broadcast/mod.rs. Communication is
set up and modules are run from the node module.
There is a problem with this commit. std:🧵:spawn imposes a static
lifetime guarantee on type T in Message<T>.
However, it is generated during build-time and therefor is
unnecessary to be kept around in the repository.
There are two potential solutions for this problem:
1. Don't generate it build-time and use a checked-in version
2. Don't check it in.
Solution: don't check it in
The reason why I picked this solution is because it is, generally
speaking, less error-prone as it prevents "I forgot to regenerate
files" type of situations.