Rewrite error printing to use the pretty-printer

This allows semantic annotations for errors. Potential features include
clicking source locations to jump to them, and showing "specifically"
sections collapsed at first.