Used anonymous namespace to hide ContextBinding details.

We were using the static keyword before to hide the function, but that did nothing for the structs - anonymous namespace hides them both.
Added _copy argument to Context::get() bindings.

The rationale for this is explained in the comment in ContextBinding.cpp. Although this new feature may eventually have uses of its own, it's primarily needed right now for unit tests for the upcoming Context optimisations.
WIP Context Ownership.

This introduces a Context::Ownership enum, which allows a Context to just be "borrowing" the things it references, avoiding lots of allocations and reference counting. This gives big speedups, but really complicates the semantics of the Context class. I think it's a dead end, but am checkpointing progress since it almost works.