A lot of work on Contexts.

- Lazily copy internal data when Contexts are modified after being used.
- Do some work to make namespaces possible.
- Allow registering Contexts in other Contexts as namespaces.
- Tests for all that.