Consolidated FilteredSceneProcessor filter access into helper methods.

At a later date this will give us a single place to control the Context in which filter queries are made.
First pass at SetFilter.
Added further unit tests for SetFilter.
Made SetFilter compatible with Isolate and Prune nodes.
Improved FilteredSceneProcessor documentation.
Added UI file for SetFilter.

This includes a useful right click menu for populating the set plug with the names of sets available in the connected scenes.
Replaced custom Filter context with field in standard context.

Now we have an optimised Context implementation, the performance difference appears negligible, and using the standard Context for everything is preferable over having special cases.

I did consider modifying the Context class to allow RunTimeTyped storage rather than just Data storage, so that the scene plug could be stored without encoding as uint64_t, but decided against it. Because RunTimeTyped (or GraphComponent, or Plug) doesn't have a copy() method, it would make implementing the ownership semantics the Context requires impossible, or would require documenting special cases for non-copyable types. It seems preferable to have one nasty isolated cast for an isolated use case than to confuse an API which is central to everything.
Added context argument to FilteredSceneProcessor utility methods.

Since we already have access to the context, it doesn't make sense to pull it out of thread local storage again.
Removed unnecessary Context construction in Prune and Isolate.

Also improved documentation in FilteredSceneProcessor to reduce the chance of doing it again.
Implemented UnionFilter::sceneAffectsMatch().

UnionFilter is now compatible with SetFilter inputs.

Fixes #92.
Fixed deadlock removing input from running InteractiveRender node.

We were calling from Python into C++ by calling ViewportGadget::dropSignal() in GadgetWidget, and that was calling Plug::setInput( NULL ), which would then trigger destruction of the renderer in InteractiveRender, which would then start trying to flush buckets and close display drivers on a background thread, which would end up in GafferDisplayDriver, which would emit dataReceivedSignal() or imageReceivedSignal(), which would attempt to enter into python to call the python slots which were connected, but block because the GadgetWidget thread had the GIL. Fun.

Now releasing the GIL in all signal calls, which fixes this and should prevent a host of similar problems in the future.
Added pausing of interactive renders.

Previously pausing a render just meant that we stopped sending edits, but the render was still happening in the background and taking up valuable cycles. We now pause the renderer itself in addition to not sending edits any more.

Refactored the code a bit to make it all easier to follow. Before, we were changing our internal state and stopping/starting renders in various different signal handlers and it was hard to follow the overall logic. Now we use much simpler signal handlers which just track what has been dirtied, and keep all our update logic in a single update() method, which is hopefully easier to follow.

Fixes #646.
Hid ScriptNode binding internals in an anonymous namespace.
Added GIL release to ScriptNode undo() and redo() bindings.

This fixes a deadlock when an IPR restart was triggered from undo or redo - with the UI holding the GIL on the main thread and the Display node emitting a signal with a python slot attached on a background thread.
Merge pull request #851 from johnhaddon/setFilter

SetFilter
Merge pull request #845 from johnhaddon/iprPause

IPR Pausing
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.