Add support for an incremental snappy mode

Users wanting to do incremental parsing of a sequence of Sereal
packets in a single buffer cannot use Snappy as originally
implemented, as there is nothing in the protocol which specifies
the size of the compressed data, meaning there is no way to find
the end of the first packet.

This patch adds support for a new "compression" format (code = 2),
which is a length (encoded as a varint), followed by the compressed
data. This format is enabled with the "snappy_incr" option. New
decoders will handle this format automatically, old decoders will
die with a warning about an unknown compression format.

I can imagine in the future we might rename the current "snappy"
compression format to be something like "snappy_deprecated", and
make the new "incremental" version the default "snappy" format.
Add support for a sort_keys option in the encoder

This makes it possible to compare hashes dumps using Sereal without
having hash order issues.

Note that it does not generally solve the problem of producing a
canonical representation of a data structure, it only solves the
problem of ensuring that hashes are output in a predictable order.