DATAMONGO-586 - Integrated requested changes from code review.

Introduced TypedAggregation which holds type information of the input type of an aggregation.
Cleaned up aggregate Methods on MongoOperations
Removed HasToDBObject interface.
Cleaned up constructors for Aggregation and TypedAggregation.