Range generators in the preprocessor metaprogramming framework.

One of the most useful constructs in preprocessor metaprogramming fold and map
constructs are numerical range generators. Given two numbers a and b where
both are expressed in ppmpf digit sequence format with a <= b, using the
<odreex/ppmpf/range.hh> a series of function macros are offered that expand
the range of [a,b] into either a ppmpf sequence of tuple collection. By
convention [a,a] = a.

A practical example of use is to deploy a function macro like PPMPF_IRANGE_TUP
to create a ppmpf tuple of all numbers (expressed as ppmpf sequence digit
format numbers internally) and then add them all up through a left fold, as
follows:

    PPMPF_TUP_FOLDL_OF( ((PPMPF_IADD,_1),_2)
                      , PPMPF_IRANGE_TUP((0)(0)(0)(0),(0)(1)(4)(0)))

    expands to -> ((9)(8)(7)(0)) which is 9870, the sum of all numbers from
    0 to 140.

The numerical ranges that can be created thusly are within the [0,9999] range
of positive integers, that is 10000 numbers at maximum. Several optimizations
can be used to make generation of such ranges faster; for the time being, the
range generator constructs rely on the fold recursion macro constructs.