Add QueryDecomposer API

Each clause of a disjunction query is indexed separately in the Monitor, and the
results of running the different clauses are then combined by the various
matchers.

This should speed up query sets that contain large disjunctions, as the
Presearcher can now select individual branches to be run, rather than running
the entire query.
Add another sugar constructor to Monitor