Create vendor/gems if it doesn't exist

I was having an issue when migrating this code over to Liftoff where if
vendor/gems didn't exist, the entire vendorizing script didn't run. By
testing that the directory exists and creating it if not, these errors
stop happening.
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.
Parse empty string arguments correctly.

When the parser encountered an empty string (e.g. `""`) it was matching the
`soft_string` or `hard_string` rule, but didn't include any named matches
(i.e. any `literal` characters) so it returned the whole matched string
instead.

After experimenting with various ways of matching the opening and closing
quotes, it ended up being a smaller and more understandable change to just
add a rule to explicitly match empty strings.

Fixes #139