Rewrite Collection::group() to use command instead of driver helper

This avoids an issue with an API change in the driver and makes the group() method more consistent with other command wrappers.
Prepare all MongoCode options for mapReduce
Document when mapReduce returns a Cursor instead of an ArrayIterator
Cast query/newObj command options to objects

The group command seemed to require this, but there is no harm in doing it for all command options that are expected to be documents.
Add "ok" field to mocked command return values
Make command result checking more robust
Compare expected command results with an ArrayIterator