Ensure only finite floats are saved.

Savefiles with NaN or INF floats can't be restored. Also,
there should never be an svalue with a non-finite float.
If that happens, there is an error in the driver.
Added an assert() checking for isfinite().
Fixed #641 and should make all paranoid people happy. ;-)