rt: don't save and restore xmm/regs in __morestack.
rustpkg: Fail when crate inference fails; inject link attributes

1. Fail when there's no package script and no crates named
main.rs, lib.rs, bench.rs, or test.rs.

2. Inject the crate link_meta "name" and "vers" attributes, so
that the output file gets named correctly in the library case.

3. Normalize '-' to '_' in package names.
rustpkg: Add a few tests

There's no test runner for rustpkg yet; just sketching out a few
basic test scenarios. pass/ contains packages that should compile
successfully, whereas fail/ contains packages that should fail
to build.
rustpkg: Implement clean; replace boolean result flags with fail!()

1. Implemented the `clean` command

2. The methods implementing rustpkg commands all returned `bool`.
Since most of not all of the error situations seem unrecoverable,
I changed the methods to return unit (and also stubbed out several
more methods that were assuming a package script existed, to be
re-implemented in the future)
rustpkg: Remove bogus .rc file
rustpkg: Change this example to show how to do a custom build
rustpkg: Don't execute the standard build logic if there is a pkg.rs
rustpkg: Add a list of rustpkg commands that should pass

This is a test file containing examples of commands that should
succeed. When we write the test runner, we will have to figure
out how to automate them.
rustpkg: Add more tests

These are examples of what *should* work, and probably don't
work yet.
add dropwhile and takewhile iterators
auto merge of #5418 : luqmana/rust/stack-float, r=brson

Like I commented in #2043, I can't reproduce the weirdness from #1388 on either mac or linux (x84_64) and pushing to try gives all green.

That's 128 less bytes to have to keep in the stack for every call to __morestack.
auto merge of #5921 : brson/rust/pipes, r=brson

This builds on #5909. I've been combing through the pipes code to understand it and started refactoring a bit.

* Removes pipes::spawn_* functions. These are not particularly useful since they deal with low-level pipes types.
* Inlines the protocol-compiled definitions of `oneshot` and `streamp`. These are the only two uses of the protocol compiler in core and I'm inlining them so I can understand what they are doing as I work on pipes. I may un-inline them in the future.
* Removes redundant functions from core::comm
* Change the constructors to use the `new` convention
rustc: One less copy
rustc: Make some typechecker errors non-fatal
Tidy
auto merge of #5920 : catamorphism/rust/rustpkg, r=catamorphism

r? @graydon
auto merge of #5924 : catamorphism/rust/non-fatal-errors, r=catamorphism
rustc: Anti-copy police

In this case, some copies are still necessary to convert from
a mutable to an immutable @-box. It's still an improvement,
I hope.
auto merge of #5914 : catamorphism/rust/copy-cops, r=catamorphism
auto merge of #5938 : thestinger/rust/iterator, r=pcwalton