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.
Rederived Box from DependencyNode.

Also implemented enabledPlug() and correspondingInput() to allow users to define enabled/disabled behaviours.

This breaks binary compatibility.

Fixes #1015.
Added UI for setting up Box pass-through behaviour.
Merge pull request #1020 from johnhaddon/boxDependencyNode

Box derived from DependencyNode
Brightened the MenuButton menu indicator.
Avoiding multiple cache insertions in ValuePlug::Computation::compute()

Previously, it was quite common for a given computation result to get inserted into the cache multiple times, resulting in more calls to memoryUsage() than necessary and a very significant performance penalty. I'm now skipping the insertion if the value is already in the cache, resulting in an 85% improvement in startup time for one of my test renders.
Update comment in ValuePlug.cpp.
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.