Made BlockExceptions carry a context.

This adds a general SALVEException, which should serve as the basis for
all exceptions that carry a context. Conversion throughout the block
modules to generate the new BlockException type.
Made tokens carry a StreamContext.

This required numerous tweaks to the tokenizer, but also many fixes to
the test suite, to use the new Token.__init__, which takes a context.
Made ParsingExceptions carry StreamContext.

Includes updates to tests and making Token context more uniform in
naming with other uses of StreamContext.