Implemented affects() and plugDirtiedSignal() to work with Plugs.

Previously they only worked with ValuePlugs. This is the first step in rejigging the Node/DependencyNode hierarchy to allow affects() to be used effectively for nodes which have an alternate means of computation than hash()/compute().
Introduced a ComputeNode class.

This refactors out the hash()/compute() machinery from DependencyNode, allowing DependencyNode to be used for tracking dependencies that are not computed in the usual fashion - this will be useful for shader nodes and executable requirements, and anyone who wishes to define their own means of computing results from a node graph.
Implemented dirty propagation for Shader nodes.

Derived Shader from DependencyNode, which makes reasonable sense now that DependencyNode doesn't contain the hash()/compute() mechanism that doesn't make sense for shaders.
Moved Node::enabledPlug() and Node::correspondingInput() to DependencyNode.

They only really make sense in conjunction with affects(), which is also defined on the DependencyNode.
Fixed dirty propagation of Shaders through ShaderAssignments.

This currently only works for RenderManShaders and OpenGLShaders - see todo explaining the problem with ArnoldShaders.
Removing workaround for 3delight bug, which was fixed in 10.0.138.
Added rudimentary shader updates to InteractiveRender.

It needs to be much smarter about what to update and when, but it's functional for small scenes.
Merge pull request #281 from johnhaddon/shaderRerendering

Shader rerendering