Move from query engines to querier factory instance methods

Background:
dstore started with instance methods that added queriers to collections,
but they were too coarsely defined which made them difficult to
override.

We could have defined more granular instance methods to add a
query's querier, but instead, we moved back to a dojo/store-style
`queryEngine` property because it made mixin and matching query engine
methods easier.

But once we started researching more advanced query-related topics such
as supporting custom query types and custom query-tracking logic, it
became clear that the `queryEngine` approach was awkward to extend and
took intentional programmer effort to inherit and extend another class's
`queryEngine`. Instance methods are much easier to override and extend.

Flat is better than nested.