[GC] Debugged.
Fixed all known issues. The last bug-bugs had to do with cell counts
calculated in alloc.cpp functions calling NeedBump. Also the fixed
heap size needed to be increased after adding a fact(1000) to the
gcstringlisp test driver.

If a program is highly-recursive, gcstringlisp may end up with many
copies of various items in the heap, due to its crazy architecture.
In any case a program may need more stack depth than the default. Try
working with the stack size option -Wl,--stack,nnn .

alloc.cpp:
In general, tidied up loose ends in memory allocation. The fixed heap
size had to be increased for the tests to pass for both LISP
implementations.
Details:
Added XLOG, LOG by a different name to allow quickly enabling a single
log.
Added success check within NeedBump.
Corrected the alloc bump in string_get_substr
Corrected cell counts in array_append_element
Added success check to gc_collect().
gclisp.cpp:
Changed boolean functions that were returning the string "t" to return
a symbol instead.
Added a function that checks whether the environment is intact. Of
course, calling it is expensive.
gcstringlisp.cpp
Added a function that checks whether the environment is intact. Of
course, calling it is expensive.
Refactored the checks of whether a string starts with '(' in Eval.
Added some logging tracking the roots.
Added exception handling.