Enabled GafferOSL build in IE config.
Removed hardcoded OSL version in IE config.
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.
Moved MetadaBinding implementation into unnamed namespace.
Removed custom TypeId argument handling from Metadata binding.

This is now taken care of for us by Cortex.
Made UI registration methods accept classes in place of TypeIds.

This matches the less verbose form we've always used for registering Metadata, and the form that is now available for all C++ registrations thanks to a new converter in Cortex.
Omitted staticTypeId() calls wherever possible.

This includes the following places :

- Factory registrations for PlugValueWidget
- Factory registrations for NodeUI
- Factory registrations for NodeToolbar
- Factory registrations for ParameterValueWidget
- Calls to GraphComponent.ancestor()
- Calls to GraphComponent.children()
- Calls to GraphComponent.commonAncestor()

This makes for more readable, more pythonic code.
Merge pull request #861 from johnhaddon/typeIdBinding

Removed unnecessary staticTypeId() calls
Merge pull request #854 from johnhaddon/viewerGrid

Viewer grid
Merge pull request #803 from johnhaddon/ieOSLBuild

IE OSL build