Make -DDEBUG_GC to work
Fix a subtle GC bug
Make it possible to run gc() whenever a new object is allocated.

When compiled with -DALWAYS_GC, the minilisp tries to run gc() every time
a new object is allocated. That forces all the existing objects to move to
new memory locations, invalidating the old addresses. By doing this the GC
behavior becomes more predictable and repeatable. If there's a memory bug
that the C stack has a direct reference to a Lisp object, the pointer will
become invalid when the next gc() runs, and dereferencing it will immediately
causes SEGV.