Make more explicit that TypeError is being thrown.

`typer.TyperErrorGen.MacroCantExpandIncompatibleMacrosError`
throws because the type checker it uses is at `NoContext`,
which throws by default... This default is bad and is going to change,
so make this code independent of that future sanity.

TODO: don't use mutable state to determine position for the error
wip: towards different ReportBuffers

The only thing that changes somewhat often in ReportBuffer
behavior is whether to buffer or not.
ThrowErrors is constant throughout a phase, so let's use a different
ReportBuffer for that, and eliminate branching.

buffer errors in all Context#error overloads
--> this seems like the right thing to do
except for two shady neg tests, the test suite passes

the failures are caused by the buffered error masking the more verbose one