trie: remove the Copy requirement
auto merge of #5245 : thestinger/rust/trie, r=graydon
add floating-point read/write to Reader/Writer
std: remove an unnecessary copy from workcache
rustdoc: Remove a unused variable warning
rustdoc: change paragraphs fn to take &str
core: convert vec::{head,head_opt} to return references
core: convert vec::{tail,tailn} to return references
core: convert vec::{init,initn} to return references
rustc: remove some copies
rustc: minor code cleanup
core: convert vec::{last,last_opt} to return references
auto merge of #5213 : erickt/rust/vec-ref, r=graydon

This patch series changes a handful of vec functions to return references instead of copies. The one downside with making this change is that these functions aren't usable in a couple cases now due to some purity complaints. For example, this [change](https://github.com/erickt/rust/commit/c31e81a532fc07e89be33cadb5109d167aa725f4#L1R87). I couldn't figure out a way to get `last` to work on a `@mut ~[...]` type, so I ended up having to use `*crate_cache[crate_cache.len() - 1].metas`.
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.