merge with stable
run-tests: only check the common criteria once per test
obsolete: clean up a couple of docstrings for correctness
paper: get rid of changelogtag template duplication
hgweb: remove trailing whitespace in mercurial.js
hgweb: show full date in rfc822 format in tooltips at shortlog page

The absolute date was not shown anywhere in the log view for users with
enabled JavaScript.
paper: remove unused occurence of changelogtag in views

This variably isn't passed to these views and it always renders to empty string
for this reason. Other themes don't have this issue.
hgweb: separate search itself and template generation

This will make it simpler to add other search modes.
hgweb: cleaner if conditions in changelog() function

This removes unneeded extra nesting level and extra variable, which makes
the code easier to understand.
proxy: allow wildcards in the no proxy list (issue1821)
ui.config: fix bug in config alternatives from cc669e4fec95
basectx: add an empty class that will be used as a parent of all contexts

At the moment, there is no simple way to check if an object is a context
because there is no common parent class. If there were, we could use
'isinstance' everywhere. Simply having memctx inherit from workingctx or
changectx would allow the use of 'isinstance' but that could lead to some
confusing situations of reading the code since we have three distinct concepts
of a context:

- changectx represents a changeset *already* in the repo, and is therefore immutable
- workingctx represents changes on disk in the working directory
- memctx represents changes solely in memory which may or may not be on disk

Therefore, I propose refactoring context.py to have all three contexts inherit
from a parent class 'basectx'.
basectx: return a copied context if changeid is already a basectx

This implements a copy constructor so that we can pass a basectx-derived object
in future refactorings.
changectx: if passing a basectx then exit __init__ immediately
basectx: move __str__ from changectx
basectx: move rev from changectx
basectx: move node from changectx
basectx: move hex from changectx
basectx: change _node to node() in hex

This allows a child class to overload the node() function and still share the
same code for hex().
basectx: move __int__ from changectx