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.

minor cleanup required in typers:
 - don't do pure expression check after typer
 - go straight to reporter to force (i.e., not buffer) warning