Fix message compression flag.

@burke @fw42 

Fixes #20.

Pull request #8 introduced a bug where the flag indicating which compression
format was used wouldn't be correctly set in the outgoing message. Instead of
overriding the Value field (which would also be confusing for people trying to
use it after sending) we cache the compressed payload in a separate hidden
field, and don't change the compression flags.

Add some tests to ensure this doesn't happen again.

Bonus fix: error if we don't recognize the compression format.