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.