Reorder Collection methods
Failed commands should throw a ResultException (fixes #96)
Reorder CollectionTest methods
Use integer for checking command result "ok" field
Remove redundant tests covered by Builder's geoNear test

Moved the test back to the unit test suite, since it didn't need to be a functional test.
Rename and refactor ArrayHasKeyAndValue constraint

Currently, this constraint is only used in QueryTest
Allow array or string values for mapReduce's out option
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
Test that command errors will throw a ResultException
Fix indentation in QueryTest
Test various output methods for Collection::mapReduce()