Change std::fmt::{Float,LowerExp,UpperExp} to not print '-NaN' for NANs

Currently, this:

    println!("{}", std::f64::NAN);

prints "-NaN". This commit is an attempt to fix that.