rustc: Don't copy in add_used_link_args
auto merge of #4978 : z0w0/rust/issue-607, r=graydon
auto merge of #4993 : thestinger/rust/deque, r=graydon

Closes #3748 and #2343.
libsyntax: Remove last use of structural records in pipes compiler.
libsyntax: Explicit-self-ify pipes compiler.
libsyntax: Long lines.
vec: grow_fn doesn't require Copy
Make univariant enums act like structs, so that they're aligned correctly.

Consts of such enums are aligned correctly, so we could either misalign
them to match the type_of, or fix the type_of.  The latter seems like a
better idea.
pub fn main
Tests shouldn't read from stdin.

As far as I can tell, the only reason run-pass/type-use-i1-versus-i8
is trying to do a read is because that code was left over from the
original program the issue was found in.  When that test is run as
part of check-fast, and apparently only in that case, the test blocks
indefinitely, which is bad.
`pub fn main` for run-pass tests that didn't have it
syntax: Allow 1-tuple expressions

This is for greater uniformity (for example, macros that generate
tuples). rustc already supported 1-tuple patterns, but there was no
way to construct a 1-tuple term.
libsyntax: Update view_item_use/import to reflect actual usage
Long lines.
Modernize bitv mut fields and explicit self
Change SmallBitv to use uint instead of u32
Remove the 'uint_bits' constant in bitv
Favor local closures instead of global functions
Implement Set container on top of a bit vector
Add benchmarks to measure differences in bit vectors