Made LabelPlugValueWidget disabled when the plug isn't editable.
Added PlugWidget.labelPlugValueWidget() method.
Added NodeUI.plugValueWidget() method.

This allows client code to introspect a NodeUI, and get access to specific PlugValueWidgets within it.
Implemented SectionedCompoundPlugValueWidget.childPlugValueWidget().

This allows the sections to be introspected by StandardNodeUI.plugValueWidget().
Implemented RenderMan shader parameter activation via annotation expressions.

An activator is defined by a global annotation of this form :

	pragma annotation "activator.name.expression" "pythonExpression"

The python expression may reference current parameter values by name, and also use the connected( "parameterName" ) function to query whether or not a parameter is connected.

Activators are then assigned to specific parameters using annotations of this form :

	pragma annotation "parameterName.activator" "name"
Implemented annotation-based uis for RenderManLight node.

This just reuses the RenderManShaderUI, adding registrations for the RenderManLight node too. At some point we still need to better define the relationship between shaders and lights, in particular with respect to how coshaders can be plugged into lights.
Fixed Group::hashGlobals() bug.

It wasn't including the namePlug(), and it should have been.
Fixed SubTree forward declarations.

Fixes #269.
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().
Merge pull request #271 from johnhaddon/forwardDeclarationFixes

Forward declaration fixes
Merge pull request #256 from johnhaddon/shaderParameterEnablers

RenderManShader parameter enablers
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