contrib: added revset examples for benchmarking performance

Added list of revsets used for benchmarking revset performance so far.

--HG--
extra : rebase_source : aabc8d20238310ce354bb49921029f1c7460aad2
contrib: added revset performance benchmarking script

This script takes two arguments (starting revision, ending revision) and tests
for each revision in between the entire list of revsets in the script using
perfrevset.

--HG--
extra : rebase_source : 153dda17783ee4ecc5455d3a9a79ffe1160d9859
extra : amend_source : afab4e9f90504e6055db9b9201438840915dc17d
contrib: have the revset benchmark test script take a revset

The script now selection revision to run benchmark against using a revset query
instead of a revision range.

It is expected that people benchmarking revset have some knowledge of revset.

--HG--
extra : amend_source : 6daf573ebd1dade4dc20d683c4456cbc896bfd9c
extra : histedit_source : 9b6c1f942f5b87d7ecd8e6c6c262d0e2454985cd
contrib: make revset benchmark script able to read from stdin

This help fine control of what we want to benchmark

--HG--
extra : source : a3be9b726fcbd4621af971c4769c082d48e43686
extra : amend_source : 2d4721498cc6ca9f3f8e6c4c47a6d3f2968c6867
extra : histedit_source : 2c46db3e5cde43dde0a2b1dd0468af544d2453db
revset: added min and max methods to baseset and lazyset

This classes have no particular order so they rely on python min() and max()
implementation. This methods will be implemented in every smartset class in
future patches. For other classes there are lazy implementations that can be
made for this methods.

--HG--
extra : rebase_source : b6b8e8035bea3d8d31dd6932bde43c300f8f65e2
revset: added _orderedsetmixin class

This class has utility methods for any ordered class to get the min and the
max values.

--HG--
extra : rebase_source : d74f1137bd82bc04d91aabcf5ec5235018a1eaa2
revset: changed spanset to extend _orderedsetmixin

Now spanset can use the lazy min and max methods implementation.

--HG--
extra : rebase_source : 1c726bc2726fb787de15162707393807e30e5ea1
revset: changed orderedlazyset to also extend _orderedsetmixin

Now orderedlazyset can use the lazy min and max implementation.

--HG--
extra : rebase_source : d894de3674f9f6124d5378cee24f4626665bde51
revset: add a default argument for baseset.__init__

We are now able to create empty baseset using `baseset()` as we are able to
create empty list with `list()`.

--HG--
extra : rebase_source : 5317206a1418be6e88fd2a0b1b4d8a025e3ca993
revset: changed addset to extend _orderedsetmixin

Now _addset can use the lazy min and max implementation.

--HG--
extra : rebase_source : fb40c2fcd4ea3f387ad8bc49cea9f31db7da1294
revset: changed minrev and maxrev implementations to use ordered sets

Performance Benchmarking:

0) max(tip:0)
1) min(0:tip)
2) min(0::)

b96cb15ec9e0 (2.9.1 release)

    0) ! wall 0.005699 comb 0.000000 user 0.000000 sys 0.000000 (best of 450)
    1) ! wall 0.005414 comb 0.010000 user 0.010000 sys 0.000000 (best of 493)
    2) ! wall 0.025951 comb 0.030000 user 0.030000 sys 0.000000 (best of 107)

05267e6e94dd (public tip at submission time)

    0) ! wall 0.015177 comb 0.020000 user 0.020000 sys 0.000000 (best of 175)
    1) ! wall 0.014779 comb 0.010000 user 0.010000 sys 0.000000 (best of 189)
    2) ! wall 12.345179 comb 12.350000 user 12.350000 sys 0.000000 (best of 3)

Current patches:

    0) ! wall 0.001911 comb 0.000000 user 0.000000 sys 0.000000 (best of 1357)
    1) ! wall 0.001943 comb 0.010000 user 0.010000 sys 0.000000 (best of 1406)
    2) ! wall 0.000405 comb 0.000000 user 0.000000 sys 0.000000 (best of 6761)

--HG--
extra : rebase_source : 4a6b23e387330da23b716e4db3355b3374c8d0a8
extra : amend_source : d7af8af131a9a3fce13d230ba33d6e4467a5d90e
cmdutil: changed code in getgraphlogrevs not to use getitem

__getitem__ is a method that is not implemented lazily on many of the new
classes and it can be easily replaced with a structure that takes advantage of
the new lazy implementations instead.

--HG--
extra : rebase_source : f43687d36bf25e8e6c5e79528652bab29bfdde1f
cmdutil: changed code in _makegraphlogrevset not to use getitem

__getitem__ is a method that is not implemented lazily on many of the new
classes and it can be easily replaced with a structure that takes advantage of
the new lazy implementations instead.

--HG--
extra : rebase_source : 1534cf3c136a765e5bf9e8e76f0928a53edf123c
cmdutil: changed revset for spanset

Instead of using baseset(repo.changelog) changed it for spanset(repo) which is
much faster.

--HG--
extra : rebase_source : b9e0fd08087c540b51016b764c8bd2453e705e15
getgraphlogrevs: do not convert smartset to baseset

We are now sure that revs is a smartset. We remove the baseset call that would
defeat any lazyness.
getgraphlogrevs: return an empty baseset instead of a empty list

We aims at returning smartset only so that function higher in the stack can use
smartset feature.

--HG--
extra : rebase_source : e89676a8aaa43739d45c032860d726930daaa9fc
extra : amend_source : 43c42f9d3a77be7d88e2af3d0be806e50e92177f
cmdutil: changed max method for lazy call

Used the lazy max call instead of the python max implementation to be able to
use lazysets for graphlog.

--HG--
extra : rebase_source : a2dcd458b6b1c81bfe81d7673f9b3e9f39df184b
webcommands: changed code to use lazy classes when calling dagwalker

This needs to be changed to use a baseset since dagwalker now expects to
receive a smartset. This is basically wrapping revs into a baseset to be
compatible with smartset implementations.

--HG--
extra : rebase_source : bf09a919736fb3a4c3c9404e0ac84025a989beac
graphmod: changed code in dagwalker to use lazy implementations

Used lazy methods when possible.

--HG--
extra : rebase_source : 30cb60a207e11d9659a307b3646447ef1767b9a9