Fix #550: parseFloat("-0.5")

The whole and fractional parts are parsed separately, and the fractional
part was always added to the whole part without regard to the sign. This
meant that any negative number with a fractional part would be
incorrectly parsed, e. g.:

-0.5 as -0 + 0.5 =  0.5
-4.9 as -4 + 0.9 = -3.1

A simple solution, requiring only three changed lines, would have been
to detect the sign of the wholePart (string), and multiply the
fractional part with it when adding it to form the numerator. However,
this slightly more complex solution also fixes the parsing of "-0.0",
which previously returned +0.0 (different numbers per IEEE 754).
Add test for #550: parseFloat("-0.5")

Moves the parseFloat() tests to a separate function for better
organisation. Also adds a helper function to extract the common
'(parseFloat("...") else 0.0)==...' pattern (because parseFloat() has an
optional return type, which cannot be used with '==' directly), and
changes the "fallback" value from 0.0 to NaN (which will always make the
comparison fail).
Update assertion messages in parseFloat() tests

parseFloat() used to support grouping with underscores, and when that
feature was removed in 7d9e919, the tests were updated, but their
assertion messages still contained the underscores.
Merge pull request #551 from lucaswerkmeister/fix550

Fix parseFloat bugs and add tests