Gzip writer/reader

A general refactor of code to have the ability to provide other reads/writers in addition to sequence file readers. 

Added some tests for the writers and readers and also added a performance test.
Just thinking aloud: the constructor is invisible in the interface. How about creating method with the following signature:
public init(LogFilePath path, CompressionCodec codec, FileReaderWriter.Type type) throws Exception;
and implementing zero-paramer constructors. This will introduce more structure and hopefully capture non-conformance issues in the compile time (rather than at runtime).