Improve Mercurial command completion.

I've been using my own completion file for Mercurial for a while, and decided to take some time and clean it up and share it with you guys.

One thing that doesn't seem to be behaving properly is completion when the possible arguments are paths.  I was playing with git completion, and I noticed how it only tabbed out one directory at a time.  For my hg completion, it seems that entire file paths show up as a single completion option.  That is, I see:

```
$ hg add <TAB>
something.txt    some/path/to/file.txt
```

But with git I see:

```
$ git add <TAB>
something.txt   some/
```

Any thoughts on what I'm doing wrong?

Also, please let me know what other comments you have.  I'm definitely using this as a chance to learn fish scripting better...

Daniel