Colour support in the prover + refactoring of pretty-printing vs show

This was done by bringing colour semantics up to the level of the pretty-printer. Now, the internal pretty-printer documents have a notion of semantic annotations, which can refer to internal Idris names. This is also the future basis for better IDE support.

Finally, a result of this process has been a massive de-duplication between Show and the pretty-printer.

Update: the pretty-printer is now used to format error messages as well.