Replace the O(k^2) loop that erased leading zeros one byte at a time
from the front of a std::string with a single linear scan and one
erase(0, n) call.
Also adds regression tests for issue #34:
- correctness cases for numbers with leading fractional zeros
- a static check that the generated code no longer contains the
quadratic pattern
- a large-input case (100k leading zeros) that reproduces the
vulnerable shape
Closes#34