Improve error handling

* Reduced output to one line, unless -g switch is added.
* Added highlighting on the error token and shows 2 lines of context around the error,
* Added spelling fuzzy checking on promise constraints that aren't allowed in that block type

I would like to further improve upon this branch, yet I posted it as a pull request to make my changes public and so that I could receive feedback.