Replace search procedure with query procedures.

Query types can be selected at runtime, where each internal node is
evaluated as being a candidate or being excluded in the next step of
the search.

Objects which pass the query are given back to the user one at a time
instead of compiling a list of matched objects.
Add spatial join queries.

Spatial joins work on two data sets - either two different R-Trees or
two copies of the same R-Tree).
Move minimum bounding volume logic into R-Tree.