Don't pop empty macro context stack.

Ran into this while reworking -Xfatal-warnings logic.
fatalwarn
split Reporter in future-public iface and current necessity
factor out some duplicated code, remove enum
Route everything through reporter