Change the way we implement iterating in the quadtree. Previously we would call a user-specified function. However, that was inefficient and could lead to a possible O(N^2) issue in some cases, and would use more memory than necessary.

Now we return iterator objects.

This required changes to the tests, but not many substantive changes.
Some minor optimizations. Also, transform the text by 1.0x even for single chars.