Rename fields of block_list in preparation for subclassing

This is necessary because at least some of the subclasses overlap names.
Make block_list a base class
Switch block_list and subclasses to dumb_ptr

Now we're well-defined, since we're actually calling ctors and dtors.

Most of this code will not survive long ...
Reformat the lexer and parser so my next patch isn't so crazy
Allegedly remove all manual memory management
Also poison memcpy, memmove, and memset
add new stuff stuff (with tests!), poison memcmp and strncpy
Fix bugs