Added ability to have child Gadgets to Gadget base class.

Previously this was only allowed for the ContainerGadget class and derived classes. This was a little odd, as it meant that the ContainerGadget::acceptsChild() implementation was less restrictive than the Gadget::acceptsChild() implementation - the general rule is that derived classes may be more restrictive, but must not accept something the base class can't handle.
Rederived NodeGadget from Gadget rather than IndividualContainer.

It was always strange that NodeGadget should have an is-a relationship with a pretty restrictive container - deriving straight from Gadget makes more sense and provides more flexibility to implementations. It also prevents it from being possible to totally clobber the NodeGadget's implementation by calling setChild( somethingElse ).
Added methods controlling Gadget visibility.

These mirror the semantics of the identical methods already existing on the Widget class. Invisible child gadgets are not counted towards the bound of the parent, and do not affect the layout computed by containers.
Rederived ViewportGadget from Gadget rather than IndividualContainer.

This allows viewports to have multiple child gadgets, which will make it easier to implement more complex Views, and pave the way for allowing interactive tools like manipulators to add their own content to the viewport.
Added a grid to SceneView.
Switched SceneView::Grid updates from plugSet to plugDirtied signal.

As per the Node documentation, plugDirtiedSignal() is the appropriate one for observers of a plug to use - it is triggered any time the observable value has changed. This makes the SceneView more robust to having input connections to the grid plug, rather than just having the values set directly.
Added simple viewer preferences section with grid dimensions.
Merge pull request #854 from johnhaddon/viewerGrid

Viewer grid