Fast binary serialization; profiling libraries

The 'store' package provides efficient binary serialization. There are a
couple features that particularly distinguish it from most prior Haskell
serialization libraries:

* Its primary goal is speed. By default, direct machine representations
are used for things like numeric values (Int, Double, Word32, etc)
and buffers (Text, ByteString, Vector, etc). This means that much of
serialization uses the equivalent of memcpy.
* Instead of implementing lazy serialization / deserialization involving
multiple input / output buffers, peek and poke always work with a
single buffer. This buffer is allocated by asking the value for its
size before encoding. This simplifies the encoding logic, and allows
for highly optimized tight loops.
* store can optimize size computations by knowing when some types always
use the same number of bytes. This allows for computing the byte size
of a `Vector Int32` by just doing `length v * 4`.