Implement a format_args!() macro

The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings
Rewrite fileinput tests to use std::rt::io

These tests are being very flaky on the bots, and the reason is that files are
being created and then when attempted to get read they actually don't exist. I'm
not entirely sure why this is happening, but I also don't fully trust the
std::io implemention using @-boxes to close/flush/write files at the right time.

This moves the tests to using std::rt::io which is hopefully more robust and
something that we can actually reason about. Sadly, due to #8810, these tests
fail on windows, so they're all ignored on windows right now.
Parse underscores in identifiers for format!

Closes #9119
auto merge of #9138 : alexcrichton/rust/dynamic-lib-not-threadsafe, r=thestinger

The library isn't thread-safe, cc #9137
auto merge of #9012 : alexcrichton/rust/format-args, r=huonw

The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings

I plan on transitioning the standard logging/failing to using these macros soon. This is currently blocking on inner statics being usable in cross-crate situations (still tracking down bugs there), but this will hopefully be coming soon!

Additionally, I'd rather settle on a name now than later, so if anyone has a better suggestion other than `format_args`, I'm not attached to the name at all :)
auto merge of #9096 : huonw/rust/linenoise, r=brson

- Wrap calls into linenoise in a mutex so that the functions don't have to be `unsafe` any more (fixes #3921)
- Stop leaking every line that linenoise reads.
- Handle the situation of `rl::complete(some_function); do spawn { rl::read(""); }` which would crash (`fail!` that turned into an abort, possibly due to failing with the lock locked) when the user attempted to tab-complete anything.
- Add a test for the various functions; it has to be run by hand to verify anything works, but it won't bitrot.
auto merge of #9131 : Dretch/rust/glob-range-patterns, r=alexcrichton

This feature was overlooked in the original pull request (#8914).

r? @alexcrichton
auto merge of #8908 : tikue/rust/master, r=anasazi

SyncChan blocks after sending a message until the SyncPort acknowledges receipt of the message.
auto merge of #9134 : luqmana/rust/i7617, r=alexcrichton
auto merge of #9135 : jbclements/rust/let-var-hygiene, r=erickt

Fixes issue #9110, changes field_ty element to Name, adds test case, improves fail error message
auto merge of #9140 : alexcrichton/rust/issue-9119, r=huonw

Closes #9119
auto merge of #9136 : thestinger/rust/ptr, r=alexcrichton

This is mostly for consistency, as you can now compare raw pointers in
constant expressions or without the standard library.

It also reduces the number of `ptrtoint` instructions in the IR, making
tracking down culprits of what's usually an anti-pattern easier.
rustpkg: Support sub-package-IDs

Package IDs can now refer to a subdirectory of a particular source
tree, and not just a top-level directory with a src/ directory as its
parent.

For example, referring to the package ID a/b/c/d , in workspace W,
if W/src/a is a package, will build the sources for the package in
a/b/c/d (and not other crates in W/src/a).

Closes #6408
auto merge of #9146 : catamorphism/rust/rustpkg-sub-package-ids, r=brson,catamorphism

r? @brson Package IDs can now refer to a subdirectory of a particular source
tree, and not just a top-level directory with a src/ directory as its
parent.

For example, referring to the package ID a/b/c/d , in workspace W,
if W/src/a is a package, will build the sources for the package in
a/b/c/d (and not other crates in W/src/a).

Closes #6408
rustc: Fix cstack lint for default methods. Closes #8753
Convert rust_crate_map.cpp to Rust

Conflicts:
	src/libstd/rt/logging.rs
Fix rustpkg install for git repositories
rustpkg: Search RUST_PATH properly for dependencies, and add a test for recursive dependencies

Closes #8524
auto merge of #9132 : catamorphism/rust/rustpkg-recursive-deps, r=catamorphism,metajack

r? @metajack ...recursive dependencies

Closes #8524
std: rename Option::unwrap_or_default() to unwrap_or()