hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat

This eliminates the need of two almost equal functions, makes the code cleaner.
hgweb: add changelog and search templates to raw style

This will make testing hgweb search and other things simpler and more concise,
as there is no extra HTML code in the raw style.
hgweb: add line wrapping switch to file source view

This uses classList property, which is well-supported now: both Chromium 8.0+,
Firefox 3.6+ and Opera 11.5+ support it, as well as relatively modern versions
of other browsers.
hgweb: introduce separate classes for stripey background

Introduce stripes2 and stripes4 classes to support different structure.
They will be useful to implement stripes with pure CSS everywhere instead
of current server-side implementation.
hgweb: file diff and changesets views behave like file source view

This gives all the benefits introduced before for file source view, namely
code selection without line numbers and correct indents, highlighting line
which is linked to, long lines wrapping.

Implementation strategy is also the same as for file source view: all the
lines are put in a sigle pre tag with span's for each line. Correct line
numbering (same as before this patch) is achieved with nested CSS counters.

--HG--
extra : amend_source : a2d0f0e418ff79f64a5f64c1cd93bba52d85359d
hgweb: add line wrapping switch to file diff and changeset views
version: bump copyright year
doc: bump copyright year

--HG--
extra : rebase_source : 31aca6f3e965d79fc674722fa8021007178ceff1
hgweb: run search instead of showing wrong error for ambigious identifier

Before this when multiple changesets hashes in the repos started with the
search query string, error was given that the revision isn't found, and it
was misleading. Now a simple keyword search runs in this case.
run-tests: reap timed-out zombies
run-tests: revert previous commit, run() waits after a timeout
merge: deprecate the --force option

The --force option in merge does not make what people think it does so
it may not be visible to everyone.

I have local changes and want to pull one's changes which made 2 heads.
The --force option in help says

 -f --force      force a merge with outstanding changes

so I can expect that I can use it to force the merge and commit it in my
local repository without taking my local changes into account. But
merging with -f keeps local changes and "add" them: they must be
committed or reverted before doing the merge commit. The merge -f cannot
be reverted so it leads my repository in a bad state: cannot commit
merge and don't want to revert/commit local changes yet.

Message in help have been updated to emphasize the fact that local
changes are included in the merge.

--HG--
extra : amend_source : b4f47abe85c807c6638573b6b2792a9fb98081a8
commit: enable --secret option

At the moment, creating secret commits is slightly cumbersome. They
can either be created by changing the default commit phase to secret
or by doing `hg phase --secret --force`. Both of these make secret
commits appear to be like some kind of advanced feature.

Secret commits, however, should be a convenient feature for people who
want to work on a private branch without affecting anyone else. There
should therefore be a prominent and convenient method for creating
secret commits.

Since the default phase is draft and there is no need to use --force
to go from a secret phase to any other phase, this patch
intentionally does not add --draft and --public options.

--HG--
extra : rebase_source : ba1f07f1e02448b94144a1d8ab18852b13fc57f0
gpg: treat "ERRSIG" as a valid key id but no fingerprint

--HG--
extra : rebase_source : 4aa318c8ed3e77b6c4e2ffe73d22c47f6ca84278
gpg: getkeys() removes unused returning value "err"

--HG--
extra : rebase_source : 878e6626f2431037011a35bddb454916b90cc218
gpg: add shortkey() to convert from long id to short
gpg: show "Unknown key ID xxxxxxxx" when the status is ERRSIG
tests: update for commit --secret