Add completion of remotes.
Improve tab completion for files with spaces.

This involved some parser changes to accept escaped characters in non-quoted
arguments.

The tab completion isn't perfect: When the argument is prefixed with a
single quote, the completed version will still get escaped, but shouldn't be
because of the hard quotes.
Integration spec covering quoted completion.
For single quoted paths, don't escape spaces.
Don't escape spaces in double-quoted arguments.
Memoize quoted method.

This will be called N+1 times for N paths.
Move integration spec to unit level.
Shorten long lines (a little)

Hound is probably still going to hate this. Sorry, hound.
Improve naming.
Extract method for complex string manipulation.
Improve spec descriptions.
No suffix on quoted head completions.

When completing a quoted head (e.g. `checkout "mas\t`) the resulting
completion shouldn't have a space suffix (`checkout "master"` not `checkout
"master "`)

This has the nice side effect of removing some repeated conditionals from
PathCompleter class.
Use #flat_map to shorten a long line.
Re-order methods to preserve dependency order.
Wrap long line.
Fix escaping on multiple spaces.

This uses a regular expression look ahead to avoid escaping a space at the
end of the completion. The final space is there to separate this argument
from the next argument, it's not part of the argument itself.