Debuginfo revamp
Disable struct value printing in debug info tests

This is due to the way different versions of gdb print out structs: older versions have them always spread out with fields on different lines, while newer versions will compactly print them on one line. This makes it hard for the output checker to verify the expected output.
Re-enable struct value printing in debug info tests with gdb pretty printing off
More descriptive error messages for debug info tests
Remove uses of log
core: Remove logging constants
Remove the log keyword (by renaming it to __log)

We can't quite remove logging from the language, but this hides the
keyword.
regression patch libuv submodule
rustc: One Less Bad Copy
Disable debuginfo tests on mac since gdb requires root
auto merge of #5293 : brson/rust/logging, r=brson

r? @graydon

This removes `log` from the language. Because we can't quite implement it as a syntax extension (probably need globals at the least) it simply renames the keyword to `__log` and hides it behind macros.

After this the only way to log is with `debug!`, `info!`, etc. I figure that if there is demand for `log!` we can add it back later.

I am not sure that we ever agreed on this course of action, though I *think* there is consensus that `log` shouldn't be a statement.
auto merge of #5319 : brson/rust/debuginfo, r=brson

Continuing #5140 

For the sake of getting this merged I've disabled debuginfo tests on mac (where running gdb needs root). Please feel free to follow up with further improvements.
auto merge of #5337 : yichoi/rust/pull-0312, r=sanxiyn

libuv submodule regression patch for ARM android compilation
auto merge of #5339 : catamorphism/rust/less-copy, r=catamorphism
Revamp foreign code not to consider the Rust modes.  This requires
adjusting a few foreign functions that were declared with by-ref
mode.  This also allows us to remove by-val mode in the near future.

With copy mode, though, we have to be careful because Rust will implicitly pass
somethings by pointer but this may not be the C ABI rules.  For example, rust
will pass a struct Foo as a Foo*.  So I added some code into the adapters to
fix this (though the C ABI rules may put the pointer back, oh well).

This patch also includes a lint mode for the use of by-ref mode
in foreign functions as the semantics of this have changed.
Remove `++` mode from the compiler (it is parsed as `+` mode)
and obsolete `-` mode altogether (it *was* parsed as `+` mode).
auto merge of #5307 : nikomatsakis/rust/remove-by-val, r=nikomatsakis

This is done in two steps:

First, we make foreign functions not consider modes at all.  This is because previously ++ mode was the only way to pass structs to foreign functions and so forth.  We also add a lint mode warning if you use `&&` mode in a foreign function, since the semantics of that change (it used to pass a pointer to the C function, now it doesn't).

Then, we remove by value and make it equivalent to `+` mode.  At the same time, we stop parsing `-` mode and convert all uses of it to `+` mode (it was already being parsed to `+` mode anyhow).

This obsoletes pull request #5298.

r? @brson
Remove unused variable
Remove unused import in core
Remove unused imports in std