Add context switching

`current_context` returns the current context
`current_context=` sets the current context
`available_contexts` returns an array of available contexts
`within_context` takes a context and a block, and switches to the
context for the duration of the block
`switch_to_default_context` switches to the default context

Updated docs to reflect new methods;  Had to cludge some of them to use
@!method because Yard doesn't like class_eval