trader's state now in single balanceManager struct

Previously we had three locations for the state of a trader. The
stockManager, which knew which stocks a trader owned and which one's
he/she was trying to sell. The balanceManager, which knew how much money
a trader had and how much was tied up in outstanding BUY orders. Finally
the trader itself contained a balanceManager and a stockManager knew
about all of the outstanding BUY/SELL/CANCEL orders for that trader as
well as the current trade-id.

These three components of state have been merged into a single
balanceManager struct. This provides two benefits.

1: The number of methods relating to processing messages is reduced.
Previously to process a FULL match for an oustanding BUY we had to
remove the matched BUY from the outstanding list, we had to complete the
BUY with the balanceManager and we had to complete the BUY with the
stocksManager. Now we can perform these actions in a single coherent
method.
2: It is easier to understand how the state of a trader changes with
each message without the extra indirection.
The inmemory coordinator now panics on io errors

This is because the inmemory coordinator expects perfect reads and
writes with some other in-memory component. If there is any source of
communication error it must be handled outside the read/write limits of
the coordinator.

For the current reference matching web-app this means that the code
inside the client/ package is expected to sanitise all messages coming
into the system.
Added Marshal and Unmarshal functions to msg/

The two functions define a binary format for Message structs. This
replaces the existing unsafe casting of structs to slices.

We have defined a 40 byte format using little endian byte ordering.
Neither of these decisions is very firm. In the future we will need to
take into consideration the possibility of data structures wrapping
Message structs being sent over the network. The reliable coordinator
is an example of this.

Casting a struct to a slice was unsuitable as a binary format because
it encodes the structure chosen by the compiler to represent that
struct. This could change between compiler version or across platforms.