Start work on where the time goes in Device.Update...
Merge branch 'master' into tinker
Merge branch 'master' into tinker
Setup: Added the ability to 'reverse' the selected controller outputs in the simple patching (to make it easy to patch opposite ordered stuff).  Eventually this might go to a new patching form, as it's starting to get a bit complex.
Setup: fix bug when rerunning color setup helper and reconfiguring existing filters (doesn't reference them properly).
Improved the error message in the grid element drawing error handling.
Fix Exception on Cancel from CreateGroup from selection.
Also avoid firing OnElementsChanged on Cancels in a few other places.
Fix Stack Overflow when re-grouping.
Create ElementTree::GroupFromSelectedNodes was adding the new group to itself as a child because the AddSingleNodeWithPrompt changed the selected item in the element tree.  This fix simply saves/uses the original selection as the children to put under the new group.
Fix Exception (no sequence executor) when press Play after Execution Stop/Start.
Essentially we just hook the Execution state changed event and free up our context on 'Closing' (it is going to be release anyway) and recreate it when Execution returns to 'Open' state.

This change also avoids the no executor Exception on Play after SetupDisplay/Cancel.  However, something is still wrong.  The sequence looks like it is playing in the editor, but the Preview doesn't show anything. Clearly something is not getting re-connected by I don't know what.  Closing/Opening the editor returns things to normal.

Maybe you guys can find what I've missed here?

Either way, the crash is gone in both cases, so I think this is worth checking in.
Fix issue that was causing full color elements to render lower intensities than they should in the preview.
Merge branch 'master' into tinker
More Instrumentation - no functional change.
Added collection for the 3 phases of OutputController Update processing:
-generating OutputCommands
-Extracting commands to outputs
-Controller processing commands
Merge remote-tracking branch 'remotes/billlutton/master'

# By billlutton
# Via billlutton
* remotes/billlutton/master:
  More Instrumentation - no functional change. Added collection for the 3 phases of OutputController Update processing: -generating OutputCommands -Extracting commands to outputs -Controller processing commands
  Fix Exception (no sequence executor) when press Play after Execution Stop/Start. Essentially we just hook the Execution state changed event and free up our context on 'Closing' (it is going to be release anyway) and recreate it when Execution returns to 'Open' state.
  Fix Stack Overflow when re-grouping. Create ElementTree::GroupFromSelectedNodes was adding the new group to itself as a child because the AddSingleNodeWithPrompt changed the selected item in the element tree.  This fix simply saves/uses the original selection as the children to put under the new group.
  Fix Exception on Cancel from CreateGroup from selection. Also avoid firing OnElementsChanged on Cancels in a few other places.
  Start work on where the time goes in Device.Update...
Add controller name to the new generate/extract/device Instrumentation counters.  Without this some of them can get 'lost' by the Instrumentation display framework.
Switch underlying _values from Dictionary to OrderedDictionary.
This will keep the values in the order they were created instead of letting them jump around in the list.
Added options to delay PlaySequence()

Added three options under Sequence>Playback>Play Options
Delay Off, 30, and 60 Seconds. When enabled will delay calling
PlaySequence(). Also changes the states of the Play and Stop buttons and
menu items to allow the timer to be stopped, before calling
PlaySequence() if the user so decides.
Fix defect where Execution would re-create/register it's counters and have them not be visible.   Basically, Instrumentation ion Add now just accepts the last counter registered with a given name.
Avoid NPE if user enters bad name for elements.
Increase upper limit on UpdateInterval (so I can play Giz's new stuff).
No functional change - just a change on the upper bound on the control.
Keep serial port Open execption from propagating (which cause problems later).
Ebrady on doityourselfchristmas reported a problem cancelling out of the SSF.  When I loaded the config on my system (which doesn't have COM1, the serial port Open throws in the device Start.  This primed things to fail when the device was eventually Stopped.  Ebrady was cancelling out of SFF which reloads system config (stopping and stating all devices).  Stopping the device failed because Start never completed successfully.  This change keeps the Open exception from propagating, thus preserving the ability to Stop sussessfully - no more crash.

BTW, eventually we probably want to guard any call downs to device handlers so that the core/base classes can preserve the invariants they count on.  But this localized fix seems to move the ball forward at least in this case.