Added ability for GCM wrapper to dynamically pick appropriate multiplier. This only affects corner case performances (example under 50 bytes and over 500k bytes). Those figures depend on CPU, cache, ram etc, so are subject to change. The dynamic choice is itself NOT dynamically calibrated - it's a static calibration + dynamic decision.

Rewrote AesGcm class keeping a mostly similar interface