Extracted all current serialization and deserialization to a class
Got all serialization and compression externalized
Simple control over serialization...BUT

It turns out that for two reasons it is a bad idea to have a 'nolen'
version of decode.  The first is related to the header processing.
Previously, we relied on knowledge of BSON to determine the length
of the header (by previewing the first four bytes).  This is not good.
Second, it turns out that the compactness of msgpack comes partly from
the fact that it doesn't store lengths and it throws an exception for
extra data.  Not having lengths is also an issue when dealing with
compression (where it is required).

For this reason, the format needs to be refactored such that the lengths
of all data to be deserialized must be maintained outside the serialized
data.  I added this as a separate issue (#12).
Explicit lengths specified everywhere

This closes #12.
Msgpack leads to variable sized headers
Appears to work with msgpack now

Next step will be to add compression.
Cleaned up util.py and serial.py quite a bit
Added qualifiers to all meld keys
Qualified all wall keys as well
Using smaller keys.

Saves about 1%, so not much
About the best we can do

I have now implemented msgpack serialization.  This dramatically improves
the storage efficiency while still preserving flexibility (results don't
all have to be doubles).  This format should be easy to parse across
platforms as well and any signal should only require 4 reads and subsequent
signals will require just **1**.

This closes #11.