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`.