tests: add tests around phases

Added tests that show the current effects of git.public and hggit.usephases.
compat: fix publishing of changesets in public branches

Since Mercurial 4.8, repo.__getitem__ no longer accepts bookmark as argument.
Added signature for changeset 5771f0cbe2ce
Added tag 0.9.0a1 for changeset 5771f0cbe2ce
Setting version for 0.9.0a1
metadata: updated bugtracker link

dev.heptapod.net has become foss.heptapod.net in the meanwhile
metadata: Mercurial 5.3 and 5.4 are supported
metadata: now minimum supported Mercurial version is 4.3

Before Mercurial 4.3, the pycompat module doesn't have enough
features to support our current dual Python code.

Also, the oldest version currently available in Heptapod CI
happens to be 4.3.

It's also a good opportunity to start using the 'minimumhgversion'
field, making the extension refuse to load on unsupported version.
CONTRIBUTING: updated for current project structure

These predated the move to Heptapod, having a few outdated parts.
Sending patches to Google Groups is not deprecated.

Less personal style in general.
hggit: fix safebranchrevs() for the case when the remote repo is not a gitrepo

(folded with intermediate revision with new message by Georges Racinet)

The previous conditional was wrong: in current Mercurial, 'co' is in principle
not an integer. The condition on integer has been introduced for the port to
py3, but does not change the fact that changelog.__contains__ is for integers.

The original intent in a90fe3e8a8c3 was probably to exclude local repositories,
but this had the side effect of setting `co=None` in all cases, hence affecting
pulls having nothing to do with hg-git, as the new test demontstrates.

What we really want is to force `co=None` only for remote Git repositories,
for the reasons explained in the comment.

Previous intermediate commit was

  cleanup: eliminate if statement with condition that is always true

  'co' is never an integer. It’s always None or of type bytes. Apparently 'co'
  was of type int some years ago.

  A proper fix would require to fix the lookup() remote command or change hg to
  not require it e.g. when pulling with -r. For now, let’s remove the broken
  code and be honest about that we give up.
cleanup: use more precise variable name
hggit: add comment explaining why we return None in safebranchrevs()

A test for a case mentioned in the comment will be added in a subsequent
gitrepo: add comment about wrong result of lookup() command
gitrepo: turn condition into assert
heptapod-ci: allowing failures for hg default

It's just not reasonable to expect that our tests would
always pass with Mercurial default (unstable) branch, since
this is precisely our alert mechanism.
Merge branch 'topic/default/fix-map-effect' into 'branch/default'

py3: fix map() without effect on py3

See merge request mercurial/hg-git!25
py3: fix hanging read of SSH subprocesses

Previously, reading from SSH subprocesses did’t return on Python 3. Dulwich
passes bufsize=0 to subprocess.Popen (default on Python 2, but not Python 3).
Doing the same in hg-git fixed the issue.
py3: fix map() without effect on py3
git_handler: support HTTP basic auth for the case when username and password are specified in the URL
heptapod-ci: current Mercurial is 5.4, moving 5.3 to compat stage