Documented the possibility of making pass-through connections in SceneNode.

Also made the hash*() and compute*() methods non-virtual, so that they needn't be implemented in the cases where a pass-through connection is made. The default implementation for the compute*() methods raises an exception to alert developers to the necessity of doing one or the other.
Destroyed friendship between ValuePlug and Computation.

They never really liked each other anyway.
Added test case for NumericPlug float->int->float connections.
Optimised computation propagation through chains of connections.

It's much quicker to simply traverse to the start of the chain and compute there than it is to compute at each stage.
Added direct pass-throughs in SceneElementProcessor classes.

This gives an approximately 2x speedup for a full traversal of a production test scene.
Added direct pass-throughs to GlobalsProcessor nodes.
Added direct pass-throughs to Isolate and Prune nodes.
Added direct pass-throughs to FreezeTransform node.
Added direct pass-throughs to OSLObject node.
Fixed OpDialogue foreground result processing.

When executing in the foreground, it would return to the main parameters pane immediately rather than displaying the result or closing.
Added direct pass-throughs to Constraint nodes.
Reduced string interning in Shader generation.

At least for the RenderMan case, our parameters only go one level deep (no structs), so we don't need to construct any new InternedStrings at all. This gives a very mild (~1.5%) reduction in runtime fora benchmark scene generation test.
Merge pull request #1024 from johnhaddon/shaderStringInterning

Reduced string interning in Shader generation.
Merge pull request #1023 from johnhaddon/opDialogueFix

Fixed OpDialogue foreground result processing.
Merge pull request #1022 from johnhaddon/passThroughOptimisation

Pass through optimisations