stream: add support to cork and uncork tcp streams.

Ideally, we would just use writev() with the vectors from multiple
mongoc_event_t structures. However, that is a bit difficult in the
current design. We can instead cork and uncork if multiple events
are coallesced into a single mongoc_client_send().
all: add support for coallescing event delivery.

If multiple events are sent together to mongoc_client_send(), the
underlying tcp stream will be corked to allow for events to share a
single packet.

Ideally, longer term, we would use a single writev() with all of the
events gathered buffers. This adds two syscalls which is undesired.
But it does get the packets joined which is a good idea for now.

Another option would be to make mongoc_stream_cork() add a temporary
iovec array that gets appended to on mongoc_stream_writev() and flushed
on a call to mongoc_stream_uncork().