This removes unnecessary start/stop thread creation for the interactor in the Runner and also some duplicate interactor creation on Guard startup. Before it behaved like: 1. Guard run some task 2. Runner loops through every Guard 3. Runner stops and start before each task the interactor So when you had 5 plugins configured, it created/killed 7 threads on start, and 5 on each subsequent task. The refactoring removes the responsibility of starting and stopping the interactor from the Runner class. This means that every class that makes use of the Runner must ensure that the interactor is properly stopped and started by using `Guard.within_preserved_state`.
This makes the parsing of scopes and actions form the command line more flexible. The interactor allows action and groups in any order, but drops redundant scope or group commands. reload rspec is now the same as rspec reload The interactor command parser returns now any token not matching a scope or an action, allowing us to get command options. This is used for the `change` command, to get the name of the spec to run. change spec/guard_spec.rb will trigger a manual file modification event.