API to add, remove, enable and disable contexts in the UnitRegistry

- `add_context` and `remove_context` are used to store a context
  within the registry which can then be used by name or alias.
- `enable_contexts` and `disable_contexts` are used to make one or more
  context part of the unit conversion resolution path.

See Issue #65
Keep a reference to an inserted context object (not just its map) in ContextChain

This prevents garbage collection of temporary contexts created to change
the variable values.