Improve error recovery

Improved error recovery in the parser by implementing a skipTo()
function to prevent cascading of erroneous errors. A handful of new
token types were added to improve error reporting.