As noticed while fixing
- encapsulate the error/warnings buffers in Contexts, and
only expose the minimal representation necessary to propagate
these between contexts, filter, and issue. This should fix
a number of places where buffered warnings are not treated
correctly (these were added recently, but places like `withSavedContext`
were not updated.)
- bring order to other menagerie of state within Context.
It might be simpler and safer to carry it around in a nested
case class, so we could use the 'copy' method to selectively
modify one or two fields.