Fix for #6300 -  I18n float validator rewrite

Fix for #6300. This is a complete rewrite of the validator to account for non-latin number systems, scientific notation, and "look-alike" characters (space for NO-BREAK SPACE, comma for ARABIC DECIMAL SEPARATOR, and single quote for ARABIC THOUSANDS SEPARATOR). Though the test class only tests against 13 locales, the logic was tested against all 709 locales in CLDR 25.

This also includes a small cleanup of the formatting on NumberFormat filter and removal of the extraneous NO-BREAK SPACE removal.

Rewrite of the test class to use programmatic values for `true` tests using both decimal and scientific notation.
@rahuldroy Eh, why not. __Note__: This will pass as decimal because we now only check that the input is in the _form_ of a float and don't try and do any value equivalence checking like the old validator. The old validator was doing some processing of the number and then checking that the value did not change. This ran into the issue you saw - PHP and it's "lax" handling of floats that have a large number of significant digits.