Refactor Query execution and Builder array structure

Builder now initializes a much smaller array, which only contains the default type. The array structure will grow as methods are called. In turn, Query only expects the "type", "query", and possibly "newObj" fields to exist. All others are checked for existence before access.

geoNear options were moved into an "options" array, which is now consistent with mapReduce and group.

A subtle behavioral change is that defaults for update operations and cursor options will no longer be applied unless explicitly set by the user. This should not be a problem, as the Builder defaults were consistent with those in the driver itself.
Query should allow a single cursor hint to be specified

Builder::hint() is only useful for setting a cursor hint (not related to ODM's UnitOfWork hints), so there is no reason to track multiple calls and apply them all to the cursor in Query::prepareCursor().
Query should apply "limit" option for mapReduce commands

This is consistent with what is already done for geoNear commands.