DATAMONGO-960 - Allow to pass options to the Aggregation Pipeline.

Introduced AggregationOptions with Builder to conveniently construct option objects that can be handed to an Aggregation via the new Aggregation.withOptions(...) factory method. We herby support the following options:
- "allowDiskUse" option for off-loading intensive sort-operations to disk
- "explain" option to get the execution plan for the aggregation instead of the actual results.
- "cursor" option to pass additional options to the aggregation.

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