CXX-441 support the new listCollections command format

Given that we have the shim infrastructure already this is what I came up with. I tested it against MongoDB 2.0.9 and master and it seems to work + pass all tests.

Ideally I'd have preferred if we had used the DBClientCursor constructor that takes the returned cursor id and used put_back to load up a stack of documents from the first batch as it would make the code a lot cleaner, shorter, and easier to understand, etc. The problem with that approach is that it's kind of a crazy hack (even more so than being able to put back results in to a cursor itself!)
The control flow for this is almost character for character identical to that of the aggregate helper. If it is confusing here I suggest we change both.

The flow goes like this:

- We run a query (which happens to be a command).
- If running the command failed for whatever reason you get an autoptr to nothing.
- Otherwise, if the command worked, apply the shim and check if there are any results (every command should pass this test)
- If there were results and the command was "ok" that means we got some result from the command and start applying the logic to handle the result.

There are multiple improvements we can make to this code but it was put in this way to be as close to the way aggregate works as possible.