Minor style change: list(blah) instead of [x for x in blah]
Implemented non-subtree selections, so that Lasso select can work.

Fairly substantial change -- I've tested it decently well and I think it works great!
For most situations the syntax doesn't change but in some cases it does.

I think the only thing left "dangling" is that contour selection still only uses the "zeroth" struct, so I gotta use a loop in that case.