Stick with TYPECHECK for reporting invalid cons syntax.
Have Lookup fallback to looking up in g_user_env if lookup in env fails.

Lookup first attempts to lookup the symbol in the env passed as it's
first argument (the current dynamic env, typically), and falls back to
looking up the symbol in the global user env on failure. This allows
DEFUN and LOAD to work even if they appear as non-toplevel forms. E.g.

((lambda, (f), (f)), (defun, teehee, 'lol)) ==> 'lol