Change type deduction rules to allow integer literals to be deduced as floats.

This is an issue that came up in IRC today. It seemed strange to me that a program like `let num: f32 = 1;` wouldn't pass the type checking rules while `let num = 1f32;` does, so I'm proposing this change to make it work.
I think not. `2e60` is a valid floating-point literal with an `f64` value of `2000000000000000000000064884426862042680048006680208002800648`, but it doesn't produce a warning.