Extract an InteractiveRunner from CLI

This splits the Gitsh::CLI class in two: Gitsh::CLI retains responsibility
for argument parsing, while Gitsh::InteractiveRunner takes on all
responsibility for running an interactive session.

This is partly just to keep thing clean and easy to change, and partly to
pave the way for an eventual non-interactive mode.