Added API for undo merging.

This allows the actions performed by an UndoContext to be merged with the actions performed by the previous UndoContext. This will be used by the UI to merge drag type actions into a single action for the purposes of undo. By default, no merging is performed - it is only performed if the new mergeGroup parameter to the ndoContext matches the parameter from the previous UndoContext. Merging is currently only implemented for ValuePlug::setValue() calls, but I don't see any use cases for the other undoable actions to be mergeable right now.

This commit also stops the ScriptNode::unsavedChanges() plug getting set when there is no current UndoContext.
Fixed multiple undo entries in virtual sliders cursor up/down nudging.

Fixes #400.