(WIP) CDRIVER-400 Add a customizable client callback table

Basic skeleton for a customizable callback table, primarily for use by the PHP driver.  Some things:

-need to figure out what callbacks we need
-need to figure out best places/multiple places to include triggers
-I'm sure I've massacred the style on this
The point of adding a `void *user_data` is so that the caller can have the observer provide them some state back. So in the case of having these on a client, you might do something like:

```c
void
mongoc_client_set_observer (mongoc_client_t *client,
                            const mongoc_client_observer_t *observer,
                            void *user_data)
{
   client->observer = *observer;
   client->observer_data = user_data;
}
```

And then pass `observer_data` when calling specific observer callbacks.