cleanup of ugly for no good reason code


Some code is ugly for no good reason. (The only good reason to be ugly is
the conservative garbage collector).
For example, the READ built-in uses a horrid little global string token buffer.
Some parts of eval are difficult to read for no good reason. Often because of optimization work that was done without removing code that turned out to be not so optimal.
This task is to make issues for each ugly part and to prioritize them for fixing.
Packaging for multi-threaded operation is not included here. It is important
to remain single threaded so as to not become assembly language in C syntax.