towards better error handling (#54)
towards better error handling - reporting a file with an error (#54)
towards better error handling: all MTerms are annotated with positions, so we can reconstruct the text of a mterm and its context. When error happens and wrong mterm is identified, we show this mterm (in the context!) in red in console. This is done for all errors except typing. The next step for typing errors: during type checking, we should record a path to the term, so when a sub-term is not a well-typed, having this path, we can reconstruct corresponding MTerm.
Graceful error handling of erroneous terms.

1. Additional info for type-checking. During type-checking of a term we pass a path to the term. So if a term is not well-typed, we produce an error with the path to this sub-term. Next, on the REPL top level we know which meta-term was checked, and we are able to extract corresponding meta sub-term. Next, since meta-terms have positional information, we are able to locate erroneous term directly in the user input (REPL or file).
2. Different display of errors depending on a console. If console is ASCII console, we highlight erroneous terms. Otherwise, we put a special mark (▶) at the beginning of the erroneous term.
3. Downside: type-checking becomes slower.
an example of coding general structural recursion for lists (thanks to @dkrustev for idea)
basic tests for error handling (#54)
Merge pull request #56 from ilya-klyuchnikov/error-handling

Error handling