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.