adding linenoise and early REPL behavior

I'm still unsure of the best way to integrate a REPL
with the existing lexer/parser while maintaining the goal
of a "library" interface for embedding (like Lua).
playing with basic OS/fs operations
explicit error checking in every parser function

this removes the setjmp method of catching parse errors and
allows for much more specific error messages in each
parser function.
bug fix: lexing escape sequences in string literals
adding parse_line for REPL
lexer/parser no longer operates on FILE*

this allows the lexer/parser to be even simpler.
to compile a file, read it into memory or use `mmap`,
then parse the buffer from memory.
reverting to previous parser error handling

all parser functions are supposed to return NULL if a parsing
error occurs. Unfortunately, most continue to return valid AST
structs. Need to fix this. If EOF is encountered early it is propogated.
This allows the REPL to continue parsing statements line-by-line.
updating notes, bugs/todo list, and the samples files