Sneak preview: refactor error/warning reporting

Using the PR validator to check I didn't break sbt/IDE. Feedback welcome, but I'll probably hold off a bit on this.
Nobody else dislikes the asymmetry of globalError as an identifier?  After all this time, I don't have anything on the tip of my tongue, but maybe `errorAt(msg, pos = NoPosition)`.  Not sure the regularity of `warnAt` etc is worth it.  But since `Positions` is our dependency, we are always `at`.  The motivation of the comment is that only reporter warns or informs, but lots of funcs like to have an `error` func.