Fix Validation::decimal() not working with localized floats.

Use similar workarounds as DboSource::value() for accepting localized
floats.

Fixes #2853