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
Remove resolve's xray infrastructure

Since the removal of privacy from resolve, this flag is no longer necessary to
get the test runner working. All of the privacy checks are bypassed by a special
item attribute in the privacy visitor.

Closes #4947
Update docs for Fractional, Algebraic, Round, and Trigonometric traits.
Add docs for traits Exponential, Hyperbolic, BitCount.
Got directions backwards in to_degrees and to_radians docs.
Use constants instead of raw values.
Move std::rt::io to std::io
auto merge of #10435 : jayanderson/rust/docs, r=huonw

This fills in some missing docs in the nums package. Let me know if this is on the right track for what's wanted for docs. I can probably fill in more in the future. Thanks.

(As a side note the precedence of the unary negative operator '-' tripped me up for a bit. Essentially I would expect `-25.0f32.sqrt()` to result in NaN instead of `-5.0`.)
rt: Delete more C++
auto merge of #10439 : brson/rust/rmcxx, r=bstrie
Improve error message for breaks in blocks

Before it was always stated that it was a "break outside of a loop" when you
could very well be in a loop, but just in a block instead.

Closes #3064
Remove type overflow checks from check_const.rs, refs #4220

The checks are now handled by the linter
Check inferred integer literals for overflows, closes #4220
auto merge of #10423 : alexcrichton/rust/move-io, r=pcwalton

I still plan on reorganizing the internals of the IO module a bit, but this is the major move which has been on the horizon for awhile.
Make a time test less flaky

This test was failing periodically on windows and other platforms, and in
debugging the issue locally I've found that the previous test was failing
at the assertion `ns0 <= ns1`. Upon inspecting the values, the two numbers were
very close to one another, but off by a little bit.

I believe that this is because `precise_time_s` goes from `u64` -> `f64` and
then we go again back to `u64` for the assertion. This conversion is a lossy one
that's not always guaranteed to succeed, so instead I've changed the test to
only compare against u64 instances.
auto merge of #10427 : alexcrichton/rust/no-xray, r=brson

Just a few triage issues that I ran into.
doc: CSS: fix code fonts

Closes #10330.
Fixed xfail for nbody shootout benchmark by correcting command line parse.
Cleaned up unneeded imports and type changes to resolve compiler warnings.
auto merge of #10410 : willingc/rust/shoot-done, r=huonw

...e.

Cleaned up unneeded imports and type changes to resolve compiler warnings.

Work in process
rustpkg: Eliminate the spurious `os::path_exists(&pkg_src.start_dir.join(p))` assertion failure

This addresses the problem reported in #10253 and possibly elsewhere.

Closes #10253