Correct span in privacy error
[collections] Adds `drain`: a way to sneak out the elements while clearing.

It is useful to move all the elements out of some collections without
deallocating the underlying buffer. It came up in IRC, and this patch
implements it as `drain`. This has been discussed as part of RFC 509.

r? @Gankro
cc: @frankmcsherry
Add privacy tests
ack parser.parse_ty change in quote_ty! (+ test)
Add RingBuf::as_slices as per collections reform v2.

See: https://github.com/rust-lang/rfcs/pull/509

Not sure if this is allowed to land before the RFC. Either way,
it's here for review.

r? @Gankro
cc: @bfops
libcollections: use `#[deriving(Copy)]`
libcore: use `#[deriving(Copy)]`
libfmt_macros: use `#[deriving(Copy)]`
libgetopts: use `#[deriving(Copy)]`
liblog: use `#[deriving(Copy)]`
librand: use `#[deriving(Copy)]`
librbml: use `#[deriving(Copy)]`
libregex: use `#[deriving(Copy)]`
librustc: use `#[deriving(Copy)]`
librustc_borrowck: use `#[deriving(Copy)]`
librustc_driver: use `#[deriving(Copy)]`
librustc_llvm: use `#[deriving(Copy)]`
librustc_trans: use `#[deriving(Copy)]`
librustc_typeck: use `#[deriving(Copy)]`
librustdoc: use `#[deriving(Copy)]`