Significant refactor of our prime field and group implementations.
fq::field_t and fr::field_t are now just fq and fr
the prime field class now has sensible operators, constructors and cast methods, instead of
__mul_with_coarse_reduction etc
field performs implicit lazy reductions, instead of exposing explicit 'x_without_reduction` methods, which should make the codebase easier to read
field, field2, field6, field12 and group should behave like numeric types. They have constexpr constructors, trivial destructors and all common operators/methods are constexpr
bilinear pairing methods are all constexpr. We can precompute miller lines at compile time, or even entire pairings...
Significant refactor of our prime field and group implementations.
fq
andfr
__mul_with_coarse_reduction
etc