Add generation of static libraries to rustc

This commit implements the support necessary for generating both intermediate
and result static rust libraries. This is an implementation of my thoughts in
https://mail.mozilla.org/pipermail/rust-dev/2013-November/006686.html.

For bootstrapping purposes, and possibly for continual purposes, all rust
libraries are built as both a rlib and a dylib. The rustc compilation
infrastructure is configured to prefer dynamic linking. The reason for this is
that all of the executables we produce are tailor-made for a dynamically linked
implementation, and there's no sense in bloating them with another copy of
what's just over to the left. The main reason for doing this, however, was to
keep the size of the tmp directory under control.

With this change, you can successfully build a rust program with 0 dynamic
dependencies on rust libraries. Unfortunately we sill have a dynamic librustrt
dependency, but I plan on getting rid of this soon. That being said, the "hello
world" rust program is around 11MB in size. Regardless, I have switched the
compiler to preferring static executables by default.