Handle gzip natively in Java

- on reading side, this improves performance by avoiding loading the
  entirety of the uncompressed JSON data into memory.

- on writing side, this produces the expected on disk format straight
  away.