shelve: fix bad argument interaction with largefiles (issue4111)

--HG--
branch : stable
subrepo: sanitize non-hg subrepos

--HG--
branch : stable
tests: deal with new gits sending status messages to stderr

git-1.8.4.2 will send messages like
  Cloning into 'X'...
  done.
to stderr.

Mute stderr.

--HG--
branch : stable
util: url keeps backslash in paths

Backslashes (\) in paths were encoded to %C5 when converting from url to
string. This does not look nice for windows paths. And it introduces many
problems when running tests on windows.

--HG--
branch : stable
bookmarks: consider successor changesets when moving bookmark (issue4015)

Previously, this required -f because we didn't consider obsolete changesets
(and their children ... or successors of those children, etc.). We now use
obsolete.foreground to calculate acceptable changesets when advancing the
bookmark.

Test coverage has been added.

--HG--
branch : stable
commands.bookmark: use unsetcurrent instead of setcurrent with None

There are currently two different ways we can have no active bookmark:
.hg/bookmarks.current being missing and it being an empty file. This patch and
upcoming ones make an empty file the only way to represent no active bookmarks.
This is the right choice because it matches the state that a new repository
without bookmarks will be in.
bmstore.write: use unsetcurrent instead of setcurrent with None
strip: use bookmarks.unsetcurrent instead of setcurrent with None
bookmarks: make setcurrent with None an error
strip: hold wlock for entire duration

Previously, we'd acquire and release the wlock several times. This meant that
other hg processes could come in and change state. Instead of that, retain the
wlock for the entire duration of the strip.

--HG--
branch : stable
merge with stable
strip.stripcmd: remove redundant wlock acquire/release

Now that we acquire and release a wlock in the outer scope, this is redundant.
merge with stable