std::vec: remove aliasing &mut [] and &[] from shift_opt.

Also, dramatically simplify it with some tasteful raw pointers, rather
than treating everything as a nail with `transmute`.
std::vec::raw: convert init_elem to a method.
std::vec::raw: convert copy_memory to a method.