Added a DispatcherWindow to dispatch ExecutableNodes.

Currently it can be launched using:
 - Menu /Execute/ExecuteSelected (Ctrl+E)
 - Execute Button in the Node Editor for any ExecutableNode
 - RMB on an ExecutableNode in the graph
Removed LocalDispatcher.singleton() because we always use the Dispatcher registry.
Added jobNamePlug and jobDirectoryPlug to Dispatcher for saving temporary files.

Dispatcher::jobDirectory is a utility function to create the directory and return it.
Set gui defaults for LocalDispatcher jobName and jobDirectory.
DispatcherWindow now dispatches from a background thread.
Added Context parameter to the execute app.

Context takes a series of entry/value pairs which can be used to override context entries during execution. The frames parameter is applied after the context enties.
LocalDispatcher uses subproccesses to dispatch tasks via the execute app.

It saves the current script to a temporary location determined by its jobDirectory, and outputs progress as IECore messages. It passes the context entries for each task to the execute app via command line arguments.

Fixes #866.
No longer saving scripts directly in ExecutableRender.

Since the LocalDispatcher saves the script, and the Execute UIs use the dispatcher, we shouldn't need this hack anymore.

Fixes #310.
Added ScenePlug::pathToString() method.

This mirrors the existing stringToPath() method.

Also fixed ostream output of empty paths.
Added outputLight() method to RendererAlgo.h.
Added test case for disabled GafferScene::Lights.

While hunting another bug it was necessary to check that disabled lights don't output a light set. It turns out that they don't and the problem is elsewhere, but more tests are always good.
Fixed bug in DependencyNode dirty propagation order.

This ensures that dirtiness is only signalled for a plug after it has been signalled for all the plugs it depends on and all its children.
Implemented light add/remove/hide/show for IPR.

Fixes #874.
Fixed circular reference in viewer grid menu.
Fixed shutdown warning when running `gaffer test GafferTest`.
Derived all Gaffer unit tests from GafferTest.TestCase.

There was a mix of GafferTest.TestCase and unittest.TestCase base classes before. It's better if they all use the Gaffer one so they benefit from the new tearDown() method and any other future additions.
Removed unnecessary context scoping.

Also fixed uses of the wrong context in LocalDispatcher.
Derived tests that I touched from GafferTest.TestCase.
LocalDispatcher uses the current context to generate the tasks.

We only serialise differences between the task and script contexts when creating the gaffer execute command lines.
Merge pull request #879 from andrewkaufman/localInBackground

DispatcherWindow and background LocalDispatcher