Sped up fgzip + many other small changes.

With these changes, fgzip is faster than zcat for me on Python 2
and almost as fast on Python 3.

There are also general refactorings a few places where exception
safety is improved (the constructor and _reader_proc).

I don't know if these changes support versions less than 2.7
or 3.4 on their respective branches, but that's not my concern ;).
Keep line endings.

open(...) keeps line endings, so this should too.
Changed the call to splitlines to be compatible with older versions that frowned upon keyword arguments.
Merged from master.