Renamed ExecutableNode::execution* methods.

executionHash() is now just hash()
executionRequirements() is now just requirements()
Significantly changed ExecutableNode API.

ExecutableNodes now execute() using the current Context. Multi-context execution can be accomplished using executeSequence( frames ) assuming the client only needs to vary the frame of the current Context. requiresSequenceExecution() can be defined by nodes with special needs (SceneWriter for example), to alert clients that sequence execution is more appropriate.
Updated most ExecutableNodes, dispatchers, and the execute app for the new API.
Updated SceneWriter for the new ExecutableNode API.

I left this as a separate commit since it's a decent example of re-implementing executeSequence() and requiresSequenceExecution()
Purely cosmetic renaming of private functions and arguments in Dispatcher.

This is just so I can follow the logic a bit better before I change it in the next commit.
Changed Dispatcher::TaskDescriptions to a list so we can insert easier.
Redesigned Dispatcher::TaskDescription for batching frames.

Note that the private recursive function uniqueTaskDescription() no longer returns a fully sorted list of TaskDescriptions. The public facing methods still guarantee a TaskDescription list that respects the Task requirements.

Fixes #870.
Added access methods for an ExecutableNode's dispatcher CompoundPlug.
Added batchSize plug to ExecutableNode::dispatcherPlug to control frame batching.

This allows users to determine an appropriate frame batching size for each ExecutableNode instance. Note that batchSize is added and used by the Dispatcher base class, rather than being specific to each type of Dispatcher.

Also note that nodes which requireSequenceExecution currently have a batchSize plug, even though it doesn't make sense. Once #915 is taken care of, these nodes will no longer have this plug.

Fixes #871.
Updated comments in ExecutableNode and ExecutableOpHolder.
SceneWriter::execute() now calls executeSequence() with the current frame.
Fixed tests for new execute() API.
Fixed dodgy decrement of descriptions.begin() in Dispatcher::sortDescriptions().

Now using a reverse_iterator for the outer loop, and creating a forward iterator equivalent for comparisons in the inner loop.
Merge branch 'batchedDispatching' of https://github.com/andrewkaufman/gaffer into andrewkaufman-batchedDispatching
Fixed the typos in the typo fixes.
Merge branch 'andrewkaufman-batchedDispatching'