(PUP-3602) Do not convert 0eN strings to floating point

This prevents strings that could be interpreted as 0 (any number of
of value digits or decimals) times 10 raised to some value to be
converted to floating point. Any such literal entry can be replaced by a
numeric value that is just 0 in source if indeed someone entered such a
strange constant as a string and expecting it to be a numeric 0.

The problem with allowing the conversion to take place is that strings
as produced by md5 fingerprinting typically starts with 0e thus making
all md5 fingerprints equal due to all being numerical 0.

This fix changes the conversion so that zero (in any form) followed by
eE and digits is not converted.
Should all of this be extracted to a method so that it isn't all duplicated?