Update documentation.
Remove visitAllObjects method.
Update documentation.
Add AllQuery and AllJoinQuery tests.
Refactor query code.
Fix edge case in node removal.

It may happen that all of the root's children are removed, but the root
is still marked as an internal node. In this case, a null pointer
exception will occur in chooseLeaf when trying to recurse to a
(non-existent) child node.