Updated metacadr's test suite to ensure that re-using a
metacadr-generated function does not lead to crashes. Saw this a lot in
early versions of LISP.
Lists are mutable, even by-reference. When I was popping off the values,
I was destroying the list; metacadr only worked once. That was terrible
functional programming. I should learn to trust myself; by using a
cons-list for my operations index and a lookup table (anti-if!)
for my operations, the code was simplified incredibly.
Also, added a very (!) primitive pretty printer. It'll get better over
time, but for now it's sufficient for debugging.