Move to version 1 protocol. Implement msgpack. Refactoring

* This spec implements the verison 1 protocol
* Wire compatible with the python version
* Removed xdr implementaion
* Wrote msgpack implementation (upsteam msgpack does not yet provide
  support for the published msgpack standard, which the python version
  does, so writing our own seemed reasonable given that we use a small
  subset.
* In line with the new simplified datatypes, The container type
  VerifiableMessage is removed.
* Simplified the Signer API (signer now signs arbitrary byte arrays)
I think that this is another instance where we make different tradeoffs. I think that adding an interface and dependency injection makes a lot of sense if some logic is very useful in some cases, such as when the calling code is hard to test using one specific concrete implementation or when there are several implementations of an interface. For example, an interface makes a lot of sense in the case of the KeyProvider since there are several implementations, and even more ones are expected (LDAP, which incidentally is hard to test cheaply).

In this case however, I think that testing is very straight forward anyway and the standard is tightly tied to one specific serialization format. In the event that there would be a second supported format, semantics would also be different and we would need to introduce logic to manage protocol version negotiation anyway.

To summarize, I'm all for dependency injection and interfaces when they bring value, but I don't think we should add it in this case until we have at least two serialization implementations. "Make things as simple as possible, but not simpler".