[WIP] Query constructor API changes

The one-liner long assignments sounds good (since the values are initially zero and will be set to zero again if the options are missing). For the `array|object`, we need the extra logic, though. We can do one of two things:

 * Use `php_array_fetch*_array`, which means we can't support objects since the function returns a null pointer if it's not an array type
 * Fetch a generic zval, raise an error if it's not an `array|object`, explicitly convert to an array and merge. We don't want to let users pass scalars for such options, as we could end up merging weird stuff (e.g. `[ 5 ]`).

I'm opting for the second choice.