Framework to allow monkey patching

Includes:

- reworking of StubbornEventHandler to interface directly with the stubborn instance to allow for re-use of getters/setters, and more complex functionality
- separating the Stubborn run logic from the actual setup of state and execution of a single user defined function
- ability to reset() a Stubborn run, or define a new run function mid run resetAndRun(function)