Improve local variable scoping.

Until now we faked local variables -- they only worked correctly if
there was no overlap between local variables and global variables.

Use a symbol table stack instead of a string list.

Fix bug with looking up undefined symbols.
diff --git a/libacc/tests/testlocal b/libacc/tests/testlocal
index 1650bf9..1a0b4c5 100755
--- a/libacc/tests/testlocal
+++ b/libacc/tests/testlocal
@@ -12,9 +12,11 @@
 
 if file $ACC | grep -q "ELF 32-bit LSB executable, Intel 80386"; then
 	echo "Linux 32bit Intel."
+	echo "TESTING returnval-ansi.c:"
         $ACC -R $DATA/returnval-ansi.c
-        echo Testing otcc-ansi.c
+        echo TESTING otcc-ansi.c returnval-ansi.c
 	$ACC -R "$DATA/otcc-ansi.c" "$DATA/returnval.c"
+	echo TESTING otcc-ansi.c otcc.c returnval-ansi.c
 	$ACC -R $DATA/otcc-ansi.c $DATA/otcc.c $DATA/returnval.c
 fi