Correctly parse floating point numbers of the form "X."

Formerly, we had broken behavior where the fractionalPart wouldn't parse
correctly because it was an empty string. Now we check for an empty string and
understand that it implies the value is zero.
Prevent scientific and flonum regexps from matching "." and "" as numbers

This patch also adds a number of tests for this type of situation. The major
problem was that the regular expressions specified that any part of the integral
part, fractional part, and decimal point was optional.

In fact, there are only four options:

  1
  1.1
  .1
  1.

The other combinations, namely:

  .
  <empty-string>

Are definitely not numbers. They create particularly weird bugs in the
scientific notation where

  "d1" parses equivalently to "0d1"

Additionally it removes the dependence on greedy regexps for when the decimal
point is not present. In that case, the fractional and integral digit regexps
could both match the digit sequence.