Set upper bound on setup.Cabal relative to current version
As we can't predict the future, we also place a global upper
bound on the lib:Cabal version we know how to interact with:
The upper bound is computed by incrementing the current major
version twice in order to allow for the current version, as
well as the next adjacent major version (one of which will not
be released, as only "even major" versions of Cabal are
released to Hackage or bundled with proper GHC releases).
For instance, if the current version of cabal-install is an odd
development version, e.g. Cabal-2.1.0.0, then we impose an
upper bound `setup.Cabal < 2.3`; if `cabal-install` is on a
stable/release even version, e.g. Cabal-2.2.1.0, the upper
bound is `setup.Cabal < 2.4`. This gives us enough flexibility
when dealing with development snapshots of Cabal and cabal-install.
This addresses #415
(cherry picked from commit
e66106c7b77d6ee6df4948bbe144e4d520f8b311)