Fix handling of client options (e.g. socket timeout) in command helpers

This fixes code originally introduced in a3aaffaabeef295559ae78cdc5655ee8660512ab. For convenience, command helpers take a single options array. Previously, all of those options were merged into the command document, which meant that client options were never seen by the driver. Now, client options are split from the helper's single options array so they may be passed to MongoDB::command() appropriately.
Convert deprecated timeout option for command helpers
Convert deprecated "timeout" option for Database::command()
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.
wip