Extract interactive runner from CLI

The CLI class was doing too much, so @Adam89 and I extracted an `InteractiveRunner` class.