Make the source position of CompileError optional and add the beginnings of a parser module (just a generic function trait for now)