Context copy construction optimisation

Many of our nodes create temporary Contexts so that they can query their inputs in a modified Context. And the Context copy constructor was abysmally slow - this makes it much less so, addressing #427. A synthetic test which just copy constructs contexts is reduced to 3% of its original runtime, and a slightly more real world test using the Instancer node has more than 30% knocked off its runtime.

I think there are still a few opportunities for optimisation remaining with this one, but this should be sufficient for now - Context operations don't seem to be a big part of the profiles I've looked at since making these changes.