New SourceHgWeb plugin for Mercurial integration

This plugin is based on the Gitweb plugin as HgWeb/Mercurial are quite
similar to Gitweb/Git. The only missing feature at the moment is the
ability for SourceHgWeb to determine which files were
added/removed/modified with each changeset. The reason is that HgWeb
doesn't give us easy access to this information in the same way Gitweb
does. Hence we will need to manually parse the changeset diff (--- and
+++ lines), checking for /dev/null as a filename in the event of new
files or deleted files.
Update HgWeb plugin to work with Source 0.14
Fix a number of bugs, support listing files modified

Ton Plomp contributed a patch in June 2010 to resolve a bug whereby
automatic additions of changesets were not working. Another bug with
incorrect timezone offsets was also resolved. Finally, Ton's patch also
allows for the author email address to be unspecified on a commit.

In October 2010 Marcel Bennett reviewed Ton's patch and made a few minor
changes/corrections. Marcel has also added the ability for the
SourceHgWeb plugin to retrieve a list of files modified in a commit.

I have modified the patch to escape variables before outputting them so
that this plugin is safe from potential XSS vulnerabilities.

Co-authored-by: Ton Plomp <tcplomp@gmail.com>
Co-authored-by: Marcel Bennett <marcel@iamserious.com>