CDRIVER-425 use listCollections to enumerate collections.

I'd be surprised if I wasn't leaking memory somewhere. Will valgrind this tomorrow - but in the meantime I would appreciate style & design comments, etc.

Tested against 2.7.7 and 2.6.3.
My initial reaction would lean towards a `bson_reader_t` rather than an array of `bson_t`.

Returning a `NULL`-terminated array of strings is a common practice (sometimes called a `strv`) and there are helpers for it like `bson_strfreev()` modeled after `g_strfreev()`.