Related to #16. Our errors should be a standardized, numbered and give a tip to how to fix the error along with a nice message like that of rust. We should also have different error ranges depending on if the error is a lexer, parser, compiler, type or other error.