Implements various abstract algebra abstractions.
Here, Commutative* are traits such that the output of operations is self, whereas Commuting*
the output is T.
Numerical quadrature rules.
To use a (generic, non-existent) rule Rule, one must first call Rule::new(),
and then either use Rule::nint or Rule::integrate depending if rule modifications are
desired or not.