Improve lifetimes on foldl/foldr and lift the Copy requirement
auto merge of #6254 : alexcrichton/rust/issues-5311-4490-better-foldl, r=graydon

Closes #5311 and #4490.

This doesn't change `vec.foldl` because that's still part of `old_iter`, although I could change that as well if necessary.