[WIP] Support aggregation command cursors and client options

Supersedes #187.
Correct. This is exactly what the PHP driver does internally.

In hindsight, I wish we never added the interface for splitting the pipeline across function arguments, but it's part of the public API now. Thankfully, we opted not to repeat that mistake for [`aggregateCursor()`](http://php.net/manual/en/mongocollection.aggregatecursor.php).