Fixing broken test and made ScriptExecutor more testable in the process

@mwhelan The solution currently has a failing test due to the interaction between Rhys' change and Frank's change.

This fixed the problem. In the process I changed the IScriptExecutor interface because it didn't make sense to me and I made the ScriptExecutor class more testable. If you could review to make sure my changes make sense that would be great.