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!)
I'm a bit puzzled about the flow of control here (more on that below), but it looks as if it is true that if this block is not entered, we just end up returning an empty auto_ptr? If that is the case, just reverse the check:

if (!cursor)
    return auto_ptr<...>();

// Logic for when we have a cursor

I'm also puzzled about how this works overall. The query that we are running here is the 'listCollections' command. So I would expect that if the server doesn't offer that that we would get back no cursor. But the fallback code is all guarded inside a block that requires the cursor. Can you explain a little more what is going on here?

I'm going to skip reviewing the rest of the function body until I understand this better.