Fully normalise exponent part of number on parsing

These revisions mean that the exponent part will definitely be valid
and in the correct form once it is grabbed, so no further tests will
be required. There are two loops to sort out a valid number, but as
one is non-expandable this seems at least as efficient as any other
approach. The loop used here for significant digits may yet need to
be moved to a more generic location (the same idea is needed for
other integer parts), but that is not clear yet as the tests elsewhere
may be part of the single loop parsing code.