Decoupling NetworkMessage and Transaction/Block

Changed, so that the only 'common' interface is NetworkMessage.
The blockchain is responsible for splitting the message into the
appropriate type, and then the State is responsible for processing each
Heartbeat/Block/Etc

Does not work, the test cases fail. The implementation should be close,
but dirty and buggy.