Added GafferBindings::NodeClass() overload for suppressing init.

Not all nodes have a constructor taking a name, so we need to be able to optionally define the constructors manually.
Simplified Viewer implementation.

It's easier to store everything as attributes on the View instances - using dictionaries indexed by View doesn't extend very well if we want to store more things.
Added Tool base class.

This will be used to help implement interactive tools inside the Viewer.
Added GafferSceneUI::SelectionTool.

This is refactored out of SceneView into the new Tool framework.
Tool menu in Viewer. Squash with previous commit.
Icons WIP