The new between-the-commands validation capability of Command Framework

This pull request gives a new between-the-commands validation capability to the command framework. There is now a way to add ```Assert``` statements between two consecutive commands even without completing the command playback. Following are some information of this change:

1. ```PlaybackStateChanged``` event is introduced to allow listeners of state changes in ```AutomationSettings``` when the playback is under way.
2. States are added to ```AutomationSettings``` to make it a state machine.
3. ```PausePlaybackCommand``` is introduced to pause at an arbitrary step of the command playback, with a configurable ```PauseDurationInMs``` for the pause.
4. A new property ```Tag``` has been added to ```RecordableCommand``` class so each of the commands in a recorded Xml file can be tagged with a string name. This name is useful for the callback to perform actual unit test validation (i.e. the test knows exactly at which command the callback is invoked).
5. A new unit test ```MultiPassValidationSample``` and its corresponded Xml command file are added to illustrate the usage of this new functionality.
6. ```Dynamo.Tests.UI.RecordedTests``` class is enhanced to work with the new functionality of the command framework.