mk: restore check-notidy.

tidy has some limitations (e.g. the "checked in binaries" check doesn't
and can't actually check git), and so it's useful to run tests without
running tidy occasionally.
green: remove ancient register-saving code.

@alexcrichton said he thought this was useless (and it's old logic: it's
been there since before the runtime was written into Rust).
flate: return CVec<u8> rather than copying into a new vector.

This trades an O(n) allocation + memcpy for a O(1) proc allocation (for
the destructor). Most users only need &[u8] anyway (all of the users in
the main repo), and so this offers large gains.
green,native,rustuv: Replace many pointer `transmute`'s with `as` or referencing.

These can all be written in a more controlled manner than with the
transmute hammer, leading to (hopefully) safer code.
native: be more const correct with the FFI calls.

These calls are mutating their argument and so it's bad behaviour to be
pretending that the values are immutable to rustc.
arena,std,serialize: remove some unnecessary transmutes.

`as`-able transmutes, duplication and manual slice decomposition are
silly.
Move extra::json to libserialize

This also inverts the dependency between libserialize and libcollections.

cc #8784
Correctly ignore some tests on windows

These two tests are notoriously flaky on the windows bots right now, so I'm
ignoring them until I can investigate them some more. The truncate_works test
has been flaky for quite some time, but it has gotten much worse recently. The
test_exists test has been flaky since the recent std::run rewrite landed.
Finally, the "unix pipe" test failure is a recent discovery on the try bots. I
haven't seen this failing much, but better safe than sorry!

cc #12516
windows: Fix the test_exists unit test

Turns out the `timeout` command was exiting immediately because it didn't like
its output piped. Instead use `ping` repeatedly to get a process that will sleep
for awhile.

cc #12516
auto merge of #12523 : alexcrichton/rust/ignore-some-windows-tests, r=pnkfelix

These two tests are notoriously flaky on the windows bots right now, so I'm
ignoring them until I can investigate them some more. The truncate_works test
has been flaky for quite some time, but it has gotten much worse recently. The
test_exists test has been flaky since the recent std::run rewrite landed.
Finally, the "unix pipe" test failure is a recent discovery on the try bots. I
haven't seen this failing much, but better safe than sorry!

cc #12516
auto merge of #12445 : huonw/rust/less-unsafe, r=alexcrichton

Commits for details. Highlights:

- `flate` returns `CVec<u8>` to save reallocating a whole new `&[u8]`
- a lot of `transmute`s removed outright or replaced with `as` (etc.)
auto merge of #12453 : alexcrichton/rust/move-json, r=brson

This also inverts the dependency between libserialize and libcollections.

cc #8784
auto merge of #12465 : huonw/rust/notidy, r=brson

tidy has some limitations (e.g. the "checked in binaries" check doesn't
and can't actually check git), and so it's useful to run tests without
running tidy occasionally.
std: minor whitespace cleanup
replace manual Hash impls with `#[deriving(Hash)]`
test: Use `#[deriving(Hash)]` in a couple tests
rustc: rename `hash` to the proper name `state`