fix: _to_json interprets "error" key incorrectly

"error" in JSON keys does not imply APIerror,
but instead it may contain a message caused by a
failure with C source code compilation (testrunner), for example.
New: tmc/coloring.py, helper funcs and cls's for printing in color.

Specified four different colouring 'levels': error, warning, info, success.

- Context manager class for printing multiple lines with a color
- String to colored string formatter funcs
- Direct print functions (to stdout or stderr, depending on level)

Changes to files with raw terminal escape sequeces modified to use new
functionality.

NOTE: Uses only ANSI escape codes
cleanup: files.py to use new coloring functionality

Slight changes in behaviour too: if submission status is
"fail", all testcase results are printed with proper color context
instead of just the failing ones.

Also, added few prints to tell user what happened with submission (i.e
a title?)
cleanup: replaced redundant func defs with a single one and some partial application
add: Informative printing about which filesystem directory we are submitting from