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
Add Window build directory to .gitignore
test: Clean up xfail-{fast,win32} tests

Rename {struct-update,fsu}-moves-and-copies, since win32
failed to run the test since UAC prevents any executable whose
name contaning "update". (#10452)

Some tests related to #9205 are expected to fail on gcc 4.8,
so they are marked as `xfail-win32` instead of `xfail-fast`.

Some tests using `extra::tempfile` fail on win32 due to #10462.
Mark them as `xfail-win32`.
test: Fix signal-exit-status on windows
rustpkg: Disable test suite on windows

sha1, version, util tests are still alive and they pass on win32.
test: Add xfail-win32 to two debug-info tests
doc: Fix example on Windows
auto merge of #10472 : klutzy/rust/cleanup-xfail, r=alexcrichton

Closes #10452.
docs: Change "workspace" to "package directory"

spotted by Yurume
auto merge of #10473 : jschaf/rust/ignore-windows-build-dir, r=alexcrichton

Ignoring the build directory on Windows.
auto merge of #10476 : catamorphism/rust/rustpkg-doc-fix, r=catamorphism

spotted by Yurume
auto merge of #9788 : geoffhill/rust/bare-fn-cast, r=pnkfelix

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
Fixes formatting

Without this, a.rs appears as a struck out line.
auto merge of #10484 : nibrahim/rust/docfix, r=cmr

Without this, a.rs appears as a struck out line.
Remove io::io_error

This commit removes all usage of conditions from the runtime and I/O
implementation. The new idea is to return IoResult which is a typedef on
Result<T, IoError>. The error portion of this may wish to change in the future,
but for now it's a good step forward to remove conditions.

Some notable changes:

* the if_ok!/seq! macros
* Removed ByteIterator
* The fmt traits must now return IoResult<()>
* All I/O errors in json encoding/decode are now ignored
* All I/O errors in rustdoc are now ignored
* The signature of print/println has changed
* The signature of read_bytes() has changed