Added a CoordinateSystem node to GafferScene.
Implemented drawing of coordinate systems in the viewport.

Unfortunately this continues the abuse of the SceneProcedural, but that is inevitable until we have a more sophisticated viewer.
Added coordinate system output functions to RendererAlgo.h.
Added coordinate system support to ExecutableRender.
Added coordinate system support to InteractiveRender.

This is just preliminary support and doesn't have unit tests yet. Currently it only works if the Renderer::coordinateSystem() call in IECoreRI::Renderer is modified to use RiCoordinateSystem() instead of RiScopedCoordinateSystem().
Fixed GafferTest.TextWriter so the mode can be serialized.
LocalDispatcher foreground tasks use ExecutableNode::execute() directly.

Previously it was using the gaffer execute app, which had a significant startup time, and prevented asynchronous task execution.

Also re-wrote LocalDispatcherTest using TextWriter in append mode, since the modification times aren't a good metric now that we're mixing foreground and background execution.
Fixed SceneInspector transform source labelling.

It was mistakenly setting one corner widget twice rather than setting both once. I discovered this because it triggered a horrendous crash bug in PySide (but not PyQt, which still seems far the stabler of the two).

For future reference, a distilled reproduction for the original bug can be found here :

https://gist.github.com/johnhaddon/de48fbde0031017cdc03
Merge pull request #948 from johnhaddon/sceneInspectorFix

Fixed SceneInspector transform source labelling.
Added unit tests for moving coordinate systems during IPR.

This requires 3delight 11.0.96 to pass successfully.
Added history tracebacks to the SceneInspector.

These are available from the right click context menu for any value displayed in the the SceneInspector.

Fixes #834.
Added ViewportGadget raster<->world space conversion methods.
Simplified GafferUI::View bindings using IECorePython::CastToIntrusivePtr.
Added Handle::dragOffset() method.

This can be called from a dragMove() slot to obtain the current offset in the direction of the handle.
Merge pull request #946 from johnhaddon/coordinateSystems

Coordinate systems
Re-designed dispatching using a graph of TaskBatches.

A Dispatcher::TaskBatch describes its node, context, frames, and required TaskBatches. doDispatch() is now given a top level dummy TaskBatch containing graph of TaskBatches. Each dispatcher must ensure that the required batches are executed in the correct order, and must be aware that an individual TaskBatch may appear several times in the graph due ot interleaving requirements.
LocalDispatcher allows each ExecutableNode to force foreground dispatching.

Each ExecutableNode has an executeInForeground plug in the Local section of the Dispatcher plugs. This is used by the LocalDispatcher to determine when it's safe to start dispatching from a background thread (if the executeInBackground plug is on in the first place).

Fixes #927.
Removed hack to force background renders.
Merge pull request #950 from johnhaddon/handleDragOffset

Bits and bobs of progress towards manipulators
Changed shutdown warnings to debug messages.