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.