Relocatable Sereal document bodies in the encoder

In a nutshell, this means all offsets are within the document body. It's
an incompatible change and needs a protocol version bump.

Right now, this is hardwired to emit protocol version 1 documents for
testing. Tests still fail. Work in progress.
Better decoder error message when seeing a bad Sereal header
ptable debugging functions
Snappy/encoding related fixes for hobodecoder
Use symbolic constant for no. of version bits
Let's not kid ourselves. Sereal has long been production-grade
Update decoder and tests to protocol V2

This commit message is intentionally left blank as a memento because
a failed harddrive ate the original along with a few git objects
and I only managed to restore this commit through black magic, ritual
sacrifice of the contents of a stranger's USB drive, booting a Linux
with a A:\ command prompt, howls of agony, chest-beating,
git ref-update, and the power of search engines.
Number offsets from 1 in relocatable format, not 0

This preserves the truthiness properties of the offset while at the same time
making it relocatable, and avoids a lot of awkward logical changes that
would result from doing it otherwise.

Getting the tests to the right thing was kindof a bodge. I didnt have
time to do it properly.
Update Sereal spec to V2

Offsets are now within the document body instead of entirely global.
Perl: Document Sereal V2 in Encoder/Decoder
Spec update: In V2, incremental Snappy is the new Snappy

In other words, non-incremental Snappy compression is no longer valid
Sereal in protocol version 2.
Perl: Make the encoder never emit non-incr. Snappy for V2

As per protocol change, non-incremental Snappy documents are no longer
part of Sereal V2.
Document tentative spec change wrt. header meta data
Fix C++/C99 style comment
Introduce buffer struct
Start passing the user-data for the header down

Right now, just barfs if you try to use it (but not exposed to Perl yet
anyway).
Cosmetics
Abstraction for buffer allocation/deallocation

Includes functions for copying (shallowly) and swapping buffers.
Eat your own dog food: Use buffer alloc interface for snappy
Detect when the Snappy compression was net negative and back out

Made easy by the new buffer abstraction. Yay!