Eliminated the "bad" concept and replaced with more powerful "catch".

That streamlines the implementation of new built-in functions considerably,
since you can just return 0 if anything goes wrong, e.g. type errors like
trying to add a number and a string, or slicing a string out of bounds.

Simplified the error_code diagnosis and eliminated global "exit_code".

The parse.c module now calls the out_of_memory and out_of_time functions so we
see an error message in certain degenerate cases, such as an infinite stream
of 'a', '(', ')', or white space.