Implement compressing\decompressing using zlib while reading\writing cnv gridfs stream

take look on this structure:
```
typedef struct
{
   mongoc_stream_t       stream;
   mongoc_stream_t      *gridfs_stream;
   ...
} mongoc_stream_cnv_gridfs_t;
```
first field is mongoc_stream_t, so when mongoc_stream_cnv_gridfs_t casted to mongoc_stream_t addressess of  methods read\write\etc of this first field will be called. That's some kind of inheriting\implementing interface. We create stream using mongoc_stream_gridfs_new, but it returns mongoc_stream_t, not mongoc_stream_cnv_gridfs_t, so we just call "interface method" mongoc_stream_read() passing mongoc_stream_t.