Fix gperformance-tools setup and apply it to src/engine/tests.
More realistic get_random_gnc_numeric()

Increases the possible denominators to 1E10, but clamps the numerator to
1E13 * denom with 1E19 max. This is equivalent to $1E8/1 US in
Indonesian Rupiah, the currency with the lowest per-unit value in the
world at the time of this commit.
Begin QofInt128 class.

Constructs, adds & subtracts, prints, and compares.

Includes unit tests.
Implement operator*= for QofInt128
Add zero and abs functions to QofInt128.
Add increment, decrement, and shift-eauals operators to QofInt128.

They'll be needed for division.
Operators /= and %= plus function div() for QofInt128.
Some more constructors, for convenience.
Add bitwise operators and binary operators.
Extract a class function bits() to return a size value.

Helps to pre-determine overflow. Also correct the original implementation
in operator *=, which got the wrong answer.
Check for incoming overflow and NaN on all class computational operators.
Fix mask error in operator<<= and operator>>=

Must specify 1 as a uint64_t to get the right masks.
Implement QofInt128::gcd and lcm.
Implement QofInt128.pow.
Ensure that the sign is correctly preserved and transferred.
Assert that the quotient and remainder references aren't this.

Otherwise this gets zeroed and produces a wrong result.
Lose the value returns for various reasons of inequality.
Reimplement gnc_numeric with QofInt128

And in a more C++ idiom.
A better, clearer approach to constraining random gnc_numerics

Which happens to actually work.
Ensure numeric errors aren't stored in split amounts or values.