Started updating state objects to record duration
Tidied up previous commit
Updated TestPartSessionState to record times etc.
WIP refactor of ItemSessionState/Controller

ItemSessionState is becoming a "pure" data structure and will
record built-in variables separately. Functionality added to
ItemSessionController to replace this. Also made ISS implement
the same enter/end/exit timestamps for tests, and started changing
ISC to record this. Needs a bit more work.
WIP: Added support for uncommitted RVs

This is to allow for "save but not submit", which
should fix a bug I filed about this before. Will need to tidy
this up a wee bit though.
Added "hard" reset to ItemSessionController

This is the same as the existing "reinit" concept used
in the engine itself (previously accomplished by creating a new state).
I have renamed the existing reset/reinit as soft/hard reset, but
not all the way through yet.
WIP: Started splitting ItemSessionController

Also started to clean up the call backs for interactions
to make it clearer how they set uncommitted RVs