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-963 - CompoundIndex should treat expireAfterSeconds correctly

Prepare issue branch.
DATAMONGO-963 - CompoundIndex should treat expireAfterSeconds correctly

We added an additional check on the fields used as key, so that TTL is ignored for CompoundIndex with more than one field. 

Prior to this change potentially invalid index structures would have been created for eg. @CompoundIndex(def = "{'foo': 1, 'bar': 1}", expireAfterSeconds=10) leading to constantly recurring ‘ERROR: key for ttl index can only have 1 field’

This fix is related to https://jira.mongodb.org/browse/SERVER-10075.
DATAMONGO-963 - CompoundIndex should treat expireAfterSeconds correctly

Added @deprecated to @CompoundIndex.expireAfterSeconds.