hgweb: generate revnav in two phase

We first generate revision to link. Then we dispatch them in before, after list.

This will help filtering of unknown revision.
hgweb: ignore filtered revision in revnav

This changeset checks that a revision is known before adding it to the
navigation.

This will prevent traceback on filtered repository. This changeset result in an
incorrect behaviors, Navigation link may be dropped without any replacement.
However this bad navigation generation is much better than a crash
hgweb: use changelog for iteration

Iterating through changelog is  necessary to enforce filtering.
hgweb: walk the graph through the changelog

This is necessary to enforce filtering. The result is a bit buggy (may provide
less changeset than expected, but it will stop crashing on filtered revision
access.

Note that changelog.revs can not represents empty iteration like xrange did. So
we have to explicitly prevent call when there is nothing to do.
hgweb: run with "served" filter

This changeset enable the "served" filter on all repo used by hgweb.

Hgweb misbehave in a lot of when filtering changeset are present but I do not
expect normal people to have secret or obsolete changeset on they server.
Misbehavior will be gradually fixed later.