std: use a `match` in `assert_eq!` to extend the lifetime of the args.

This enables

    assert_eq!(foo.collect::<Vec<...>>().as_slice(), &[1,2,3,4]);

to work, by extending the lifetime of the .as_slice() rvalue.
collections: replace all ~[T] with Vec<T>.
Emit intrinsic lazily
Remove the unused Point struct in the assert-eq-macro-fail.rs test.
auto merge of #13436 : pongad/rust/lazyemit, r=thestinger

Fixes #11926
auto merge of #13437 : kaseyc/rust/remove_unnecessary_struct, r=sanxiyn

Removes the unused Point struct from assert-eq-macro-fail.rs.
auto merge of #13350 : huonw/rust/devec-collections, r=alexcrichton

collections: replace all ~[T] with Vec<T>.