memfilectx: add a size method

This method is needed to have memfilectx behave like the other file
contexts. We can't just inherit this method because each file context has
different behavior: filectx reads from the filelog, and workingfilectx reads
from the disk. Therefore, we define memfilectx to return the size of the data
in memory.
gpg: accept '--edit' like other commands creating new changeset

After this patch, users can invoke editor for the commit message by
'--edit' option regardless of '--message'.
backout: accept '--edit' like other commands creating new changeset

After this patch, users can invoke editor for the commit message by
'--edit' option regardless of '--message'/'--logfile'.
qrefresh: allow to specify '--message/'--logfile' and '--edit' at the same time

Before this patch, 'hg qrefresh' disallows to specify
'--message/'--logfile' and '--edit' at the same time.

'hg qrefresh' has disallowed such combination since Mercurial 0.9.2,
but this restriction seems not to be reasonable for recent Mercurial,
because all other commands creating new changeset allow it.

This patch allows 'hg qrefresh' to specify '--message/'--logfile' and
'--edit' at the same time like other commands creating new changeset.
qfold: allow to specify '--message/'--logfile' and '--edit' at the same time

Before this patch, 'hg qfold' disallows to specify
'--message/'--logfile' and '--edit' at the same time.

'hg qfold' has disallowed such combination since Mercurial 0.9.2, but
this restriction seems not to be reasonable for recent Mercurial,
because all other commands creating new changeset allow it.

This patch allows 'hg qfold' to specify '--message/'--logfile' and
'--edit' at the same time like other commands creating new changeset.
shelve: add option combination tests for refactoring in succeeding patch
vfs: add unlinkpath to vfs

This patch adds unlinkpath() function in vfs to replace util.unlinkpath().
patch: replace functions in fsbackend to use vfs

Several functions in fsbackend are replaced to use vfs functions.
vfs operations are applied on filename and path is joined by _join().
workingctx: duplicate status list received at _poststatus hook

basectx.status may reorder the list after workingctx._poststatus is called,
so workingctx must copy it.  Otherwise, wctx.deleted() would return "unknown"
files, for example.
bash_completion: add -l|--list support for shelve

This was overlooked previously and found via 'hg shelve -p -l <tab>' (to show
the diff of the shelved commit).
merge with stable
resolve: fix grammar of no matching files message
status: document the content of the returned tuple in the docstring

The ``status`` function returns a lot of information. We document it.
color: add parenthesis to help readability

Took me a multiple attempts until my mind eventually stop reading:

  auto = coloropt = 'auto'

And properly reads:

  auto = colorpopt == 'auto'

So we add parenthesis to clarify.
patchbomb: includes a unique series ID in email header

Now that we have patch index and series size information, having a unique series
identifier will helps tool to glue all email back together without any
additional logic.
test-patchbomb: normalize glob lines and record their construction

This makes it significantly less painful to use --interactive on
run-tests, as you can now use the recorded regular expression
substitutions to fix up the glob lines and produce zero diffs.

This also tightens the expectations of a few of the lines for the MIME
boundaries - it just seemed like the thing to do while in here and
causing some changes.
patchbomb: always use message-id of first patch for series-id

This currently has the side effect that the 0 of N message has no
series-id. This won't matter for Mercurial's own use, but may be
undesirable for other projects depending on their workflow.

The way the header is inserted is intentionally a little funny to make
the test expectation diff easier to review.
patchbomb: reorder header insertions to clarify code

This is done as its own change to make the changes to test-patchbomb.t
easier to review.
wireproto: rephrase the error message for unknown getbundle parameters

In case of an unknown parameter passed to ``getbundle``, the server prints a
message and ignores the parameter. This message was misleadingly prefixed with
"abort: ". The use of "abort: " here is clearly wrong as nothing is actually
aborted and the ``getbundle`` call proceeds without the parameter.

The message is now prefixed with "warning: " and rephrased to make it clearer
that the parameter was simply ignored.
tests: rename ``test-run-tests.t`` to ``test-unified-test.t``

This ``test-run-tests.y`` is testing the unified test (.t) syntax
interpretation, not really the run-tests.py command tool itself.