shelve: make unshelve work even if it don't run in repository root

revertfiles are relative to the repository root. not paths relative to the cwd.
cmdutil: fix makefileobj not to clobber default modemap dict

Problem occurs if "hg cat -o" is invoked more than once in the same process.
The output of "hg cat" will be appended because of modemap[fn] = 'ab'.
strip: fix spelling: "allows to" -> "allows you to"
win32: add shelve extension to mercurial.ini
largefiles: fix 'unexpected response' warning newlines

Warnings should always end with \n. The warning message might contain or end
with \n, so better show it with repr encoding.
largefiles: add missing \n in ui.warn messages
largefiles: don't add extra \n when displaying remote messages in putlfile
largefiles: hide passwords in URLs in ui messages
spelling: random spell checker fixes
largefiles: don't process merge actions at all when overwriting
largefiles: remove extra check for file to get - it _is_ by definition in p2
largefiles: don't prompt for normal/largefile changes when doing plain updates

We used to get like:

  $ hg up -r 2
  foo has been turned into a normal file
  keep as (l)argefile or use (n)ormal file? l
  getting changed largefiles
  0 largefiles updated, 0 removed
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
  $ cat foo
  cat: foo: No such file or directory
  [1]

- which both asked the wrong question and did the wrong thing.

Instead, skip this conflict resolution when the local conflicting file has been
scheduled for removal and there thus is no conflict.
rebase: refactor and rename checkexternal - it is a getter more than a setter
rebase: improve error message for more than one external parent
hgweb: add missing semicolon
doc: end line preceding command line example with double colon
doc: use double quotation mark to quote arguments in examples for Windows users

On Windows, only double quotation mark can quote command line
arguments.

So, this patch uses double quotation mark to quote command line
arguments in all examples of online help document.
doc: put text into header of 1st column in table to generate page correctly

>From the table without header text of 1st column, docutils generates
the table with fully empty header row.
shelve: use rebase instead of merge (issue4068)

Previously, shelve used merge to unshelve things. This meant that if you shelved
changes on one branch, then unshelved on another, all the changes from the first
branch would be present in the second branch, and not just the shelved changes.

The fix is to use rebase to pick the shelve commit off the original branch and
place it on top of the new branch. This means only the shelved changes are
brought across.

This has the side effect of fixing several other issues in shelve:

- you can now unshelve into a file that already has pending changes
- unshelve a mv/cp now has the correct dirstate value (A instead of M)
- you can now unshelve to an ancestor of the shelve
- unshelve now no longer deletes untracked .orig files

Updates tests and adds a new one to cover the issue. The test changes fall into
a few categories:

- I removed some excess output
- The --continue/--abort state is a little different, so the parents and
  dirstate needed updating
- Removed some untracked files at certain points that cluttered the output