Set uv's custom data before uv_read_start

This is a behavioral difference in libuv between different platforms in
different situations. It turns out that libuv on windows will immediately
allocate a buffer instead of waiting for data to be ready. What this implies is
that we must have our custom data set on the handle before we call
uv_read_start.

I wish I knew of a way to test this, but this relies to being on the windows
platform *and* reading from a true TTY handle which only happens when this is
actually attached to a terminal. I have manually verified this works.

Closes #10645
std: IPv6 addresses are represented as eight groups of four HEXADECIMAL digits
Fix typo in base64 test

We want a 1000 element array, not a 2 element array
rm #[mutable_doc]
auto merge of #10646 : alexcrichton/rust/issue-10645, r=luqmana

This is a behavioral difference in libuv between different platforms in
different situations. It turns out that libuv on windows will immediately
allocate a buffer instead of waiting for data to be ready. What this implies is
that we must have our custom data set on the handle before we call
uv_read_start.

I wish I knew of a way to test this, but this relies to being on the windows
platform *and* reading from a true TTY handle which only happens when this is
actually attached to a terminal. I have manually verified this works.

Closes #10645
Remove arms_have_move_bindings
Take &Pat
auto merge of #10648 : sfackler/rust/base64-test, r=alexcrichton

We want a 1000 element array, not a 2 element array
auto merge of #10653 : thestinger/rust/meaningless, r=huonw
Take &Pat in visit_pat
Add an implementation of Encodable and Decodable for Rc. This will be needed to use Rc in place of @ in libsyntax.
Implement IterBytes for Rc<T>.
auto merge of #10657 : sanxiyn/rust/pat, r=cmr
auto merge of #10658 : LeoTestard/rust/serialize-rc, r=cmr

Implement various traits (IterBytes and extra's Encodable and Decodable) for Rc<T> when T alreay implements the trait.
auto merge of #10650 : andreasots/rust/ipv6-is-in-hex, r=alexcrichton

Without this the assert in <tt>rust_malloc_ip6_addr</tt> is triggered as it expects a correctly formatted IPv6 address.
rustc: Add lint for misplaced crate attributes
rustc: Add lint for obsolete attributes

This also moves `#[auto_{en,de}code]` checker from syntax to lint.
std: Remove unused attributes

This also enables two tests properly.
Add tests for attribute lint
rustc: Add lint for unknown attributes