Shader rerendering

This pull request implements rudimentary shader updates for the InteractiveRenderManRender node. This includes a refactoring of DependencyNode/Node to allow for node types which propagate dirtiness but don't compute using the existing hash()/compute() mechanism.

- Moved enabledPlug() and correspondingInput() from Node to DependencyNode, as they only make sense in the context of affects().
- Moved hash() and compute() from DependencyNode onto a new ComputeNode class. This makes DependencyNode a suitable base class for nodes like Shader which do need to propagate dirtiness but don't compute in the standard way (because the Shader needs access to the whole graph).
- Implemented affects() for Shader and ShaderAssignment.
- Added basic shader rerendering.

Note that 3delight 10.0.138 is needed for this to work. Also note that there are still problems whereby deadlocks sometimes occur so this isn't in a state where you'd want to bet the success of any public performances on it.