add floating-point read/write to Reader/Writer
auto merge of #5235 : yjh0502/rust/io_float, r=graydon

When parsing bytes from a wire, there is a need to parse floating-point bytes to float values ([u8*4] to f32, [u8*8] to f64). This can be done via cast::transmute, but there is no way to do it safely.

It's quite common, so I think I't better to support it in core library.