Remove "timeout" conversion from Collection command wrappers

This was originally added in #196 when fixing handling of command and client options for Collection command wrappers; however, #198 moved conversion of "timeout" to Database::command(), so we no longer need to do it in each Collection command wrapper.
Merge pull request #199
Merge branch '1.1.x'
Added ability to pass options to Collection::aggregate
Support by-reference server hash param for Database::command()

This is only supported in driver 1.5+. Since zend_parse_parameters() will complain if extra arguments are passed to extension methods, we need to count the arguments at runtime to only pass it when requested.
Include aggregation options in AggregateEventArgs
Add missing proxy methods to LoggableCollection
Split command and client options for Collection::aggregate()

This mirrors changes done in 2f39a1312e1e258fc83875088a78cbd8aefcd623 for other command helpers.
Command cursor support for Collection::aggregate()

This adds support for the aggregate command's "cursor" option. While the driver and server require the option to be an array and object, respectively, we'll also accept a truthy value as a convenience.

If a cursor is requested, doAggregate() will dispatch to a new doAggregateCursor() method, which will handle command execution and construction of a MongoCommandCursor. Ultimately, we should wrap MongoCommandCursor in something that implements Iterator before returning it directly to the user.
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.