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 #845 from johnhaddon/iprPause

IPR Pausing