[WIP] Query constructor API changes

I was under the impression that we wanted to support `array|object` wherever BSON documents are allowed. This means we can be strict about arrays for `$options` arguments on PHP methods, but we should be flexible for anything that gets serialized to a BSON document.

Dumb example, but let's say you had documents fields named `0` and `1` and wanted to sort by `{ "0": 1, "1": -1 }`. Unless we allow an object, PHP is going to screw us and we'll end up serializing `$orderby` as a BSON array. I'm not sure if the server actually allows both, since it's just a type field difference, but I think it's just easier to keep our code flexible.

> Can zquery not be initialized as php_array_fetchc(options, "modifiers")? Even skipping the existsc()?

`options` might not even exist (it's an optional Query constructor arg), so we still need to initialize `zquery`.