Added the notion of a StreamContext for errors.

In order to accurately report the origin of an error, every level of
translation carries this context, so that errors can be tied to files
and even lines when appropriate.