Fix an android compilation fail
Normalize target triple so that llvm can recognize target os correctly
add nonempty encoding for spans

Before this change, encoding an object containing a codemap::span
using the JSON encodeng produced invalid JSON, for instance:
[{"span":,"global":false,"idents":["abc"]}]
Since the decoder for codemap::span's ignores its argument, I
conjecture that this will not damage decoding, and should improve
it for many decoders.
Test case fixup (old one tested the old bad behavior).
Update test case to conform to new restrictions on casting
auto merge of #5354 : ILyoan/rust/normalize_triple, r=graydon

LLVM could not recognize target-os when target-triple was given as like 'arm-linux-androideabi'.
Normalizing target-triple fill the missing elements. 
In the case of 'arm-linux-androideabi', nomalized target-triple will be "arm-unknown-linux-androideabi" and this let llvm recognize the triple correctly. (arch: arm, vendor: unknown, os: linux, environment: android)
auto merge of #5357 : jbclements/rust/add-nonempty-span-encoding, r=jbclements

r? @nikomatsakis 
r? @erickt 

Before this change, encoding an object containing a codemap::span
using the JSON encodeng produced invalid JSON, for instance:
[{"span":,"global":false,"idents":["abc"]}]
Since the decoder for codemap::span's ignores its argument, I
conjecture that this will not damage decoding, and should improve
it for many decoders.
auto merge of #5391 : brson/rust/to-bytes, r=graydon

r?

I want to use this function as a method. There's probably a better way to design this but the existing `ToBytes` trait is not what I am looking for (it has a parameter to indicate the byte order).
auto merge of #5396 : ILyoan/rust/fix_rt_tls, r=graydon

Add a conditional compile option for android
core: Cleanup rt::context
Give core::rt and std::net their own uvll bindings

I intend to do some big refactoring and don't want to deal w/ std just now
core: Don't use printf in rtdebug!

The bots were showing a segfault that I can't reproduce. Assuming it's
varargs related so let's not use printf
core: Simplify uvll bindings and strip out currently-unused bits

No more mapping uv structs to Rust structs
core: Convert some multiline statements to single-line
core: Rename rt::io to rt::rtio

This is an internal interface. I want to use rt::io for public interfaces.
mk: If NO_REBUILD is set then don't rebuild core/std before testing

Can make turnaround of testing changes to core/std/syntax much faster.
core: Add rt::io and start sketching the API
core: Begin uv file system bindings
core: Refactor uv bindings

I can already see these are going to get massive. Putting them into multiple
files.
Add a way to run the test suite with the new scheduler

TESTARGS=--newrt make check-stage1-rpass

Conflicts:
	src/rt/rustrt.def.in