Make all messages be transmitted by protobuf RPC

**Description:** make all messages be transmitted by protobuf RPC.

To do so replace the MessageSend infrastructure by a more simple one
based on a maker interface PublicMessage that all domain classes that
can be sent to other nodes must extend.  Introduce a ProtocolSerialization
trait that is able to take any PublicMessage and serialize into protobuf
and back into a domain model message.

The protobuf representation of the messages and services is also
simplified. Now there is just one service, the PeerService, with just
one method named SendMessage that takes a CoinffeineMessage. Such
message is just the union of all possible messages.  This will make
the transition to the DHT transport very smooth.

Order message was moved to the messages.brokerage package for
consistency with the other public messages.

This change replaces some `Any` types for `PublicMessage` thus making
the interface with the MessageGateway safer.

Use reflection to check that all public messages can be serialized by the
DefaultProtocolSerialization.

**--Updated--** added support for the messages added on #108 and
perform a series of refactors and simplifications to keep it consistent:

 * All public message case classes use Transaction and 
TransactionSignature instead of byte arrays.
 * There is no need for having a public TransactionSerialization anymore and
we don't need to inject it to actors. This behavior is encapsulated on the
message gateway.

**Testing:** tests were obsessively executing along the changes.