Add Advancer API, for advancing a querytree through phases

By default, we don't advance a conjunction over a node with a weight of 0.
Decouple TreeAdvancer and TreeWeightor from node construction

These are now passed in at collection/advance time, allowing you to collect
terms from the same tree with different weights, or use different advancing
strategies for different phases.
Make advancer in MTFP available to subclasses