The pool was storing strings and references to it. References
became invalid as strings got moved around, as a consequence of
push_back() in the owner container. I'm storing references in
a custom StrRange struct now, and string refs are built on the
fly when one is needed.
It's still missing ast optimization and some code cleanup is also
needed, but it should be working in the general case.
Also write a small unit test for it.