Add gzFile utility methods to fd.c

Because it's impossible to get a file descriptor from a gzFile, reading
a compressed file can't be as easy as passing an open `fd` to `gzdopen`
since the resultant `gzFile` would need to be deallocated and the only
method of doing so is calling `gzclose`. Doing so also closes the `fd`,
which was presumably handed out by something like `AllocateFile`, so
its closing should be encapsulated there. (Context: all this machinery
is to ensure open `fd`s are closed during a transaction rollback).

In short, managing the `gzFile` memory ourselves is problematic unless
we extend the `fd.c`'s mechanisms to handle creation/destruction for us
along with whatever special behavior it provides for cleaning up during
a transaction rollback. So that's what's been done.
Push `CopyStateData->copy_file` into struct

This allows us to either refer to this as a `FILE *` or a `gzFile`.
The latter is just a `typedef`ed `void *` anyways, but this seemed
better than declaring `copy_file` as `void *` and typecasting, though
that may prove necessary to preserve backwards compatibility.
Add `bool gzip` field to `CopyStateData`

Also adds the parsing and default behavior. `CopyGetData` will key off
of this to decide which read method to use.
Augment Copy methods to handle `gzfile`

This only handles `COPY FROM` operations at the moment, but it should
handle them identically whether the target file is compressed or not.

Every file allocation, destruction, or read has been replaced with a
guard to detect whether gzip compression is in effect and call the
correct methods based on that flag.
Add `gzip` to `valid_options[]` for `file_fdw`

Ensure the option is passed through to `COPY FROM`.
Bump `file_fdw` version

This extension is backwards-compatible with any declaration written
against the 1.0 extension, so a minor version bump to 1.1 works great.