color: document the possibility to colourise tabs in diffs

This is a no-op change that simply suggests that tabs can be
colourised, but defaults to no colour effects for tabs. This
complements cset c343557a8442.

Like the similar effects for phases from f8e2aebbb24c, we set the
default effects to '' instead of None, so that this is a true noop
change. Otherwise, the diff.tab effect would override (i.e.
neutralise) the effect of the surrounding label.
color: update docstring for debug option

964dd1c491ca updated the format for the --color=debug option. This
updates the documentation to match this new format.
revert: bring back usage of `subset & ps` in `parents`

Changeset 95af98616aa7 switched the order of the operand of the "&" computation
to work around an issue from repo-wide spanset. The need for a workaround has been
alleviated by the introduction of `fullreposet`. So we restore it to normal.

The benchmark shows no significant changes as expected.

We also revert the bogus test change introduced by 95af98616aa7. The order is
actually important.

--HG--
extra : rebase_source : eb3bd2c6e37824c56b6dfd088ca418174690d5ce
abstractsmartset: default implementation for `ascending` and `descending`

These two methods are actually silly aliases for `sort()` and
`sort(reverse=True)`. So we get that aliasing at the abstractsmartset level. We
will slowly phase out all the custom implementations and eventually remove any
mentions of it from the code.

--HG--
extra : rebase_source : 485fb9f06870e2aba33d9b18d06ce44f0f5ef2dd
baseset: remove ascending/descending redefinition

We can rely on the abstractsmartset implementation.

--HG--
extra : rebase_source : e568573ffd55fed73f2c5d521cf1aa839c00cc29
spanset: remove ascending/descending implementation

We can rely on their implementation in abstractsmartset.

--HG--
extra : rebase_source : 4ca1c0a8bd9be7b788b54efa9c773f19f576f0c8
abstractsmartset: document the `fastasc` and `fastdesc` attributes/methods

See the in-line documentation for details. (This is the beginning of a massive
overhaul of revset).

--HG--
extra : rebase_source : 1c16cd34424f459be179a4d2d41831c5ae7cd8ad
spanset: enforce the order lazily to gain `fastasc` and `fastdesc` methods

Instead of having the direction of iteration enforced through the ordering of
`start` and `end` attributes of spanset, we encode the iteration direction in
an explicit attribute and always store start < end.  The logic for sort and
reverse has to be updated. The __iter__ is now based on the newly introduced
`fastasc` and `fastdesc` methods.

This will allow other code simplifications in the future.

--HG--
extra : rebase_source : a5e2851dfdb2aa439846c9ede0f3d076e4b5796f
spanset: do a single range check in __contains__

Now that `start <= end` is always true, we can simplify this function.

--HG--
extra : rebase_source : 13855e1ed0ceb899c69caf905e20039d72c49d68
lazyset: split the iteration logic from the condition filtering logic

So that the filter can be reused by `fastasc` or `fastdesc`.

--HG--
extra : rebase_source : c1ac02c2cf8307478c19cfec3dd95b4a5cb13e17
lazyset: inherit the fastasc and fastdesc method from subset

When the filtered subset has such methods, we can use them. It is implemented
as properties to be able to quickly return None if no corresponding fastasc exists
on the subset.

--HG--
extra : rebase_source : fa8d692c04de4a8df7707a5c4ef61e780ddacb0b
lazyset: drop now useless ascending/descending definition

--HG--
extra : rebase_source : 3df2d4951eb832d67348df8e2d572b40ae297f7f
abstractsmartset: add a default implementation for min and max

This default implementation takes advantage of the fast iterator if available.

--HG--
extra : rebase_source : bbb40aeddd2a93cb650c4e5642408ee805dff209
baseset: remove min/max methods

This is now handled by the base class.

--HG--
extra : rebase_source : 81dd31756d0adddcf8287a9ef71bb9f405e780cc
lazyset: remove min/max

This is now handled by abstractsmartset.

--HG--
extra : rebase_source : d2593565cadf8eca8324e0660d5a270e74fad5f8
lazyset: add order awareness to the class

Just a bit of extra code makes the lazyset aware of order. This renders
orderedlazyset useless.

At some point, the `subset` will become responsible for this ordering logic. But
we are not there yet because the various objects used as subsets are not good enough.

--HG--
extra : rebase_source : 4080d3799d414014b8513e7fd079f63d3fa4cd09
lazyset: rename the class to filteredset

All smartsets try to be lazy. The purpose of this class is to apply a
filter on another set. So we rename the class (and all its occurences) to
`filteredset`.

--HG--
extra : rebase_source : f34119b9605a3c7598ce6e878dbf53655829a818
abstractsmartset: add default implementation for filter

--HG--
extra : rebase_source : 7c2e340abb43ff176495eeb4b3cab15272f737ab
abstractsmartset: add default implementation for __and__

--HG--
extra : rebase_source : 2374dd630953c016efe9c475c7cf29a9fd949dae
abstractsmartset: add default implementation for __add__

--HG--
extra : rebase_source : 4552d61c0014b7c293bd93803f0cedd6e9558e13