guff 0.1.7

Implements Galois Fields for various natural sizes
Documentation
0.1.0

  Initial placeholder version.

0.1.2

  Add structs implementing GaloisField and constructors.

  Add README.md and unit tests.

0.1.3

  Add vector operations (no unit testing yet).

  Refine documentation.

0.1.4

  Add new guff::good module, to contain "reasonable" set of optimised
  maths implementations.

  Add optimised GF(2**4) implementation for field poly 0x13 there,
  backed by two generic lookup table types (for inv and mul).

  Fix bug in default implementation when calculating inverses in
  GF(2**4).

  Clean bill of clippy health.

0.1.5

  Start using Criterion for benchmarking.

  Benchmark guff::good GF(16) fields versus reference.

  Add good GF(2**8) implementation (+test/benchmark)

  Warning about exp not being used is OK (access via exp_entry).

  Surprisingly, log/exp implementation is not faster than reference.

0.1.6

  Document last run of benchmarks.

  Add inv() method for good GF(2**8) (fixing a couple of bugs)

  Add pow() method for good GF(2**8) (finding bug in reference pow)

  Minor documentation fixes.

  More benchmarking for new inv/pow methods.

0.1.7

  Change field.mull() to Field::mull() since it doesn't depend on poly

  For u16, u32 fields, need a new approach, since tables are too big:

  * long multiplication on polynomial fragments 

  * bytewise modular reduction / modular shift (linear shift feedback
    register)

  Implement static (8k) MULL (long multiplication) table

  Implement generic bytewise modular reduction table wrt poly

  Implement u16 0x1002b field:

  * inv via full table lookup

  * mul via MULL plus field-specific modular reduction table

  Benchmark new field, document same.