Two fixes in the settings system

I came across these two fixes while working on some magic in the settings system.

* The first commit fixes the fact that currently there is no delay in setting edit controls (which guards against temporary invalid input) because the automatic input validation calls CSetting::FromString() which actually changes the value of the setting immediately. It should instead call CSetting::CheckValidity() which simply performs a validity check of the new value but doesn't change the setting's current value. That will happen once the user has stopped typing and the delay timeout expires.
* The second commit fixes the CSettingNumber::fromString() implementation which was broken for any non-integer values and can result in odd setting values being stored for settings of type "number".