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 believe that is how cursor is supposed to behave when a query fails (copied from aggregate implementation) I think we can just return cursor though as it will be the same. Not sure whether to make it the same as the aggregate method or to make that change though.