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