Alternatively, this could be a single argument with an array of *our own* concept query options:

 * query document (where we store [query modifiers](http://docs.mongodb.org/manual/reference/operator/query-modifier/))
 * selector document
 * flags
 * limit
 * skip

I'm against the original design, which had the selector, flags, limit, and skip options *within* the query document, as that requires C code to pluck out options before we can send anything to libmongoc. Also, there is a hypothetical situation if the server added a `$limit` query modifier which was different than the current concept of a limit. Since the server does document valid query modifiers, I don't think we should attempt to put other fields inside that document at this time.

All that said, I would support having Query's constructor take a single array of options instead of separate arguments, as I know having a constructors with many args (many of which are optional in their own right) is asking for trouble down the line if we need to change the API.