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/istream.c b/src/lisp/istream.c
index 8ac275a..423c231 100644
--- a/src/lisp/istream.c
+++ b/src/lisp/istream.c
@@ -170,6 +170,7 @@
 	struct fistream_private *p = is->data;
 
 	int offset = 0;
+	char *buffer_o = buffer;
 
 	if (p->has_next)
 	{
@@ -180,12 +181,22 @@
 		offset = 1;
 	}
 
-	return (int)fread(buffer, 1, size, p->file) + offset;
+	int read = (int)fread(buffer, 1, size, p->file) + offset;
+
+	for (int i = 0; i < read; i++)
+	{
+		if (buffer_o[i] == '\n')
+			p->line++;
+	}
+
+	return read;
 }
 
 void fistream_showpos(struct istream *s, FILE *out)
 {
-	// TODO: implement
+	struct fistream_private *p = s->data;
+
+	fprintf(out, "At %s:%d\n", p->path, p->line);
 }
 
 void fistream_getpos(struct istream *is, int *line, char **name)