_optimize calculates weights of subtrees. "small" affects some weight
calculation (either 1 or 0.5). The weights are now only useful in and
optimization where we might swap two arguments and use andsmally.
In the real world, it seems unlikely that revsets with weight of 0.5 or 1
matters the and order optimization. I think the important thing is to get
weights of expensive revsets right (ex. contains).
This patch removes the small argument to simplify the interface.
As for choosing between 0.5 vs 1, things returning a single revision
(ancestor, string) has a weight of 0.5. Things returning multiple
revisions returns 1. This could be sometimes useful in the andsmally
optimization, ex.
(((:)-2) & expensive()) & ((1-2) & expensive()) ^^^ ^ ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ weight=1 weight=0.5
would have an andsmally optimization so 1-2 gets executed first, which
seems to be desirable.
Any reason to choose 1 here and 0.5 for the others?