An abstract type of scale factors
This function only needs implementation if t exposed to be a polymorphic variant.
Despite what the type reads, this does *not* produce a function after reading;
instead it takes the constructor tag (int) before reading and reads the rest of the
variant t afterwards.
apply t x multiplies the percent t by x, returning a float
of_mult 5. is 5x = 500% = 50_000bp
of_percentage 5. is 5% = 0.05x = 500bp
of_bp 5. is 5bp = 0.05% = 0.0005x
rounds down