Added support for compression of data using either GZIP or Snappy.

We might also want to use a "deflate" compression scheme as well in case the client on the other end doesn't use GZIP.

The compression is implemented by subclassing a common CompressionCodec and configuring it's own particular variation on InputStream and OutputStream. These codecs require a delegate Codec to function. This makes them a little bit harder to configure since you have to nest your serialization codec with this compression codec, then wrap that with a framing codec like LengthFieldCodec. It wouldn't hurt to have a DSL or something to set this up.