Avoid a sqrt in satisfiesConstraintsBoundsAndMaxSize.
Further optimize query tests.

Require an additional method in SolidAngle that performs a cheaper but
equivalent comparison, allowing us to further reduce the cost of solid
angle query tests. However, there is still one sqrt that is required.
Get rid of some duplicate computation in rtree data.

The data classes were just overriding values computed by the base
class, which led to extra unnecessary computation. Instead, expose a
simple constructor that requires the subclasses to compute the value
since it varies.
Replace direct manipulation of query results with method calls.

This will make it easier to refactor a bit of this code.
Track whether cut nodes are in the result set.

Use a bit in the CutNode to track whether it's currently in the result
set. This makes checking membership for those nodes faster. However,
this is only a modest improvement for now because the leaf objects
still require lookups because we don't have enough space anywhere to
save whether they are in the results yet.
Use remove/tryRemove on cuts depending on situation.

Distinguish between remove, which should definitely have the object to
be removed in the result set, and tryRemove, which tests if it is
there, removes it if it is, and returns whether it was removed. This
fixes a crashing assert since in some cases we were asserting that the
object was in the results when we were only trying to remove it if it
was.