Fix segfault in Lisp when calling variadic function.

Originally a segfault could occur due to an issue with how arguments
were cleaned up after a variadic function call. After the function
call the following assembly was generated:

add esp, nargs

Where nargs was the number of arguments passed to the function. This
did not take in to account that for variadic functions, the last
several arguments are CONS'd into one argument, meaning that calling a
variadic function with <>1 variadic argument would result in a broken
stack.

Specifically this issue came up in the implementation of REDUCE, which
relied on the variadic FUNCALL.
diff --git a/src/lisp/main.c b/src/lisp/main.c
index f9ad122..b0c014e 100644
--- a/src/lisp/main.c
+++ b/src/lisp/main.c
@@ -22,8 +22,15 @@
 
 	value_t (*lisp_main)() = find_function(env, "main")->def0;
 
-	gc_set_base_here();
-	lisp_main();
+	if (lisp_main)
+	{
+		gc_set_base_here();
+		lisp_main();
+	}
+	else
+	{
+		fprintf(stderr, "No MAIN function defined! nothing to do\n");
+	}
 
 	free_all();
 	del_env(env);