Support returning a CommandCursor from Collection::aggregate()

This adds a CommandCursor class to wrap the MongoCommandCursor class in driver 1.5+. Additionally, we add support for returning a CommandCursor from Collection::aggregate() by way of the "cursor" option.

If a cursor is requested, doAggregate() will dispatch to a new doAggregateCursor() method, which will handle command execution and construction of a MongoCommandCursor. We will then wrap that object in a CommandCursor before returning it to the user.

If a socket timeout is specified, it will be set on the CommandCursor; however, this is only supported in driver 1.6+ (see: PHP-1256).
Return a query cursor for aggregation pipelines ending with $out

This behavior is similar to what is already done in the mapReduce wrapper when an output collection is specified.

Kudos for @munkie for originally suggesting this in #187.