Split the style sheet out from Widget.py.

Having a huge amount of literal text in amongst the code was getting quite unwieldy.
Reimplemented MultiSelectionMenu using MenuButton.

They both need to do the same thing, and there's no point in duplicating the code. I do wonder if MultiSelectionMenu shouldn't _have a_ MenuButton rather than _be a_ MenuButton, but since it derived from Button previously I've kept it this way for backwards compatibility (ChannelMaskPlugValueWidget for one is relying on this).
Made MenuButtons raise menus on press rather than release.

Fixes #742.
Added menu indicator to MenuButton.

Fixes #493.
Brightened the MenuButton menu indicator.
Added scene pass-through to InteractiveRender node.

This allows it to be seen in the Viewer, SceneHierarchy, SceneInspector etc.
Merge pull request #1011 from johnhaddon/menuButton

MenuButton improvements
Merge pull request #1021 from johnhaddon/interactiveRenderOutPlug

Added scene pass-through to InteractiveRender node.
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.