Fix index error in RadialQuadrupoleIntegrationType
Consolidate integration types

This commit replaces the hierarchy of different IntegrationType subclasses
for every integration type with a smaller hierarchy containing one class
for position integration, another for momentum integration, etc. Different
dimensionalities of integration (dipole vs. quadrupole etc.) are now represented
by different instances of the same class.

To enable this we need a comparator for IntegrationType instances that is more
intelligent than comparing based on memory address, because now the constructors
are public and so there can be multiple instances with the same properties that
should compare equal. The signature of HardFactorTypeMap is updated accordingly.
Add flag for using exact kinematics
Introduce tauhat

This commit introduces the tauhat variable in IntegrationContext
using the definition in the paper
Add method to get order of hard factor
Check for mixed-order hard factors when using exact kinematics

Because the integration limits for LO and NLO hard factors are different
in the exact kinematics, we can't use mixed-order hard factors (like in
the resummation) with exact kinematics. This commit adds a check which
throws an exception if that situation comes up.
Implement exact kinematic formulas

This commit adds the exact kinematic formula for xi and introduces
the variables xa and Ya, with xa being the gluon momentum fraction
calculated using this exact kinematic formula for xi. It enables
choosing between exact and approximate kinematics using the flag in
Context.
Add exact kinematics hard factors

This commit introduces the H1qqExact and H1ggExact hard factors
which represent the exact kinematic (high-pT limit) expressions