DATAMONGO-745 - Added test cases for custom query with $in and pageable parameter.

Added test cases to verify that this works.

Original pull request: #186.
DATAMONGO-938 - Apply QueryMapper in MongoTemplate.mapReduce(…).

Previously MongoTemplate.mapReduce(...) didn't translate nested objects, e.g. GeoCommand, within the given query. That could lead to exceptions during query serialization. We now pass the query and sort object of the given Query through the QueryMapper to avoid such problems.

Original pull request: #184.
DATAMONGO-948 - Sort should be taken as is when no type information available.

Object type mapping for sort is skipped in the case no type information is present when executing query using mongo template.
DATAMONGO-949 - CycleGuard should only match properties in word boundaries.

We modified the regular expression used for cycle detection to match on the exact property name within the inspected path using word boundaries. This fix prevents sub sequences of an existing property (like ‘sub’ would have matched ‘substr’) from being matched.

Along the way we fixed the (false) assertion in one of the tests, as we create the +1 cycle reference index before actually breaking the operation.
DATAMONGO-952 - Derived queries should consider field specification in @Query.

PartTreeMongoQuery now explicitly check the presence of a manually defined field spec on the query method and creates a new Query if so.

Original pull request: #188.
DATAMONGO-958 - Switch to FieldNamingStrategy SPI in Spring Data Commons.
DATAMONGO-953 - Add equals(…)/hashCode()/toString() to Update.

We now use the underlying updateObject to implement appropriate equals(…)/hashCode() and toString() methods.

Original pull request: #192.
DATAMONGO-960 - Allow to pass options to the Aggregation Pipeline.

We introduced AggregationOptions abstraction to conveniently construct option objects that can be handed to an Aggregation via the new Aggregation.withOptions(...) factory method. For more details, see the Builder class' JavaDoc.

Note that we exposed the "rawResults" in AggregationResults and put a null guard in MongoTemplate aggregate in order to support the "explain" option.

Original pull request: #195.
DATAMONGO-954 - Add support for System Variables in Aggregations.

Prepare issue branch.
DATAMONGO-954 - Add support for System Variables in aggregation operations.

We now support referring to System Variables like for instance $$ROOT or $$CURRENT from within aggregation framework pipeline projection- and group-expressions.

Original pull request: #190.