Feature request: support store_as gzip

address #16
This patch adds support for gzip-compression of data before storing it.
Yes, only gzip.

In my ssl+kerberos+httpfs environment, this patch works fine.
I really appreciate your reviewing my code!

Your code is much nicer than mine. A problem is that `write` method need to know `new_path` generated in `compress_context` method.
So what do you think of adding `generate_path` (or other name) method?
```ruby
def generate_path(chunk)
  # if @compress, then append suffix
end

def compress_context(chunk, &block)
  # do compress...
  begin
    yield tmp
  rescue
    tmp.close(true) rescue nil
  end
end

def write(chunk)
  hdfs_path = generate_path(chunk)
  begin
    if @compress
      compress_context(chunk) do |data|
        send_data(hdfs_path, data)
      end
    else
      send_data(hdfs_path, chunk.read)
    end
  rescue
    log.warn "failed to communicate hdfs cluster, path: #{hdfs_path}"
    ...
  end
  hdfs_path
end
```