lint(track_config): improve `jsony` error message (#420)
lint(track_config): improve `jsony` error message (#420)

This commit improves an error message that a user should not encounter,
and adds some explanatory comments for the second linting pass. 

Before this commit, an error during jsony's deserialization would look
something the below (here, we expect a string but got an int):

  jsony.nim(46)            parseHook
  Error: unhandled exception: Expected " but got 1 instead. At offset: 73830 [JsonError]

With this commit, it instead looks like:

  Error: JSON parsing error during the second linting pass:
  config.json(3156, 10): Expected " but got 1 instead.

  --------------------------------------------------------------------------------
  THIS IS A CONFIGLET BUG. PLEASE REPORT IT.

  The JSON parsing error above should not occur - it indicates a bug in configlet!

  If you are seeing this, please open an issue in this repo:
  https://github.com/exercism/configlet

  Please include:
  - a copy of the error message above
  - the contents of the track `config.json` file at the time `configlet lint` ran

  Thank you.
  --------------------------------------------------------------------------------

That is, we:
- Handle the exception
- Better explain what happened
- Mention the JSON file being parsed, rather than `jsony.nim`
- Provide the line and column number (rather than the offset) where the
  parsing error occurred
- Ask the user to report the issue

This error should only occur if a value's type in the `config.json` file
doesn't match that in the `TrackConfig` object. Our current linting
approach tries to validate the types in the first pass, and only perform
the second pass when the types are correct.

Currently we also print the help message, but we'll stop doing that
after we've refactored configlet's overall error handling.

exercism/configlet