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 some tool icons.
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.
Boilerplate for CropWindowTool.
Moved shutter() and transform() from RendererAlgo.h to SceneAlgo.h.

This is binary compatible, but source incompatible.
Added camera() methods to SceneAlgo.h.

These return cameras from the scene with all globals such as with all globals settings such as crop, resolution, overscan etc applied. Updated RendererAlgo to use these methods rather than duplicate logic.
Removed GLWidget minimum size.
Added missing virtual prefix in SelectionTool gadget.
Before using pixel aspect properly.
Working with pixel aspect ratio.
Fixed ViewportGadget::RasterScope to work during selection.
Implemented draggy rectangle for CropWindowTool.