Preallocate decompress destination buffer

This patch updates Encode to store the uncompressed length as a varint
at the start of the buffer.  This allows us to preallocate the
destination when decoding and move all the append() calls to plain
assignments or calls to copy().  This is a serious optimization win,
making decoding approximately 20% faster.

This change to the output format means we are breaking interop with
other implementations.  However, many implementations (java/python)
already do exactly this, so in some sense we're _increasing_ our
interoperability, we just happen to be making an incompatible change.
Inline readUint16() and consume()

As we now no longer need append(), we can inline readUint16 and consume
without any extra complexity in the main loop.  This gives us another
small speed-up.
README: update interop notes
replace length-prefixed varint with uint32

Turns out most bindings just use uint32 instead of a varint.  Let's be
compatible at the expense of a one or two extra bytes.
decoder: check for 0-length buffers before attempting to decode
Merge pull request #8 from dgryski/length-prefix

Optimize decoder