Fixing the number matching logic in assert_styles (and associated tests).

The following things were broken with the number matching logic;
 * Scientific notation did not work (1.0e-9) was extracted as 1.0
 * When the actual was shorter than expected you'd get a weird message about values not being NaN 
 * When the actual was longer than expected, it would be doing an accidental startswith comparison.

This was discovered when trying to add fix precision checking to assert_styles.