Typeck: Disallow scalar casts to bare_fn.

Bare functions are another example of a scalar but non-numeric
type (like char) that should be handled separately in casts.
This disallows expressions like `0 as extern "Rust" fn() -> int;`.

It might be advantageous to allow casts between bare functions
and raw pointers in unsafe code in the future, to pass function
pointers between Rust and C.

Closes #8728
support for GNU configure syntax
Correct prefix / CFG_PREFIX work in configure / install.mk
support for GNU configure syntax corrections: patch from brson
Fixed incorrect usage of 'Borrowing'.
syntax: Forbid non-string literals in meta items. #623
Make Writer::flush a no-op default method

Closes #9126
Forbid type parameters in inner statics

Closes #9186
auto merge of #10164 : brson/rust/configure, r=brson

Rebase of #9990
auto merge of #10166 : brson/rust/meta, r=alexcrichton

This doesn't fix #623 but works around it by limiting the grammar.
auto merge of #10180 : alexcrichton/rust/flush-default, r=brson

Closes #9126
Fix missing parenthesis in a previous substitution '$(PREFIX_ROOT)' to  '$(CFG_MANDIR' on 1c4a348b072a
auto merge of #10189 : alexcrichton/rust/inner-statics, r=cmr

Closes #9186
std::rand: correct an off-by-one in the Ziggurat code.

The code was using (in the notation of Doornik 2005) `f(x_{i+1}) -
f(x_{i+2})` rather than `f(x_i) - f(x_{i+1})`. This corrects that, and
removes the F_DIFF tables which caused this problem in the first place.

They `F_DIFF` tables are a micro-optimisation (in theory, they could
easily be a micro-pessimisation): that `if` gets hit about 1% of the
time for Exp/Normal, and the rest of the condition involves RNG calls
and a floating point `exp`, so it is unlikely that saving a single FP
subtraction will be very useful (especially as more tables means more
memory reads and higher cache pressure, as well as taking up space in
the binary (although only ~2k in this case)).

Closes #10084. Notably, unlike that issue suggests, this wasn't a
problem with the Exp tables. It affected Normal too, but since it is
symmetric, there was no bias in the mean (as the bias was equal on the
positive and negative sides and so cancelled out) but it was visible as
a variance slightly lower than it should be.
auto merge of #10193 : osaut/rust/Fix_install, r=huonw

Fix missing parentheses coming from a previous substitution '$(PREFIX_ROOT)' to  '$(CFG_MANDIR' on 1c4a348b072a
librustc: Implement `|A| -> B` syntax for closures and make bare `fn`
work
libstd: Remove mocks.
auto merge of #10167 : briantdawn/rust/master, r=cmr

To keep consistency with the word "borrowing" I suppose an alternate way to write this could be "Having an object borrow an immutable pointer freezes it and prevents mutation".
Make managed_boxes feature gate error less opinionated
Implement a concat!() format extension

This extension can be used to concatenate string literals at compile time. C has
this useful ability when placing string literals lexically next to one another,
but this needs to be handled at the syntax extension level to recursively expand
macros.

The major use case for this is something like:

    macro_rules! mylog( ($fmt:expr $($arg:tt)*) => {
        error2!(concat!(file!(), ":", line!(), " - ", $fmt) $($arg)*);
    })

Where the mylog macro will automatically prepend the filename/line number to the
beginning of every log message.