Refactored the runtime to view coroutines as a component of tasks, instead of tasks as a component of coroutines.
rt: Add global_args_lock functions to rustrt.def.in
merging task/coroutine refactoring back into upstream
removed unnecessary import that slipped in during merge
std::rt: Ignore homed task tests
A missing ! made it so that the testcase schedule_home_states was throwing spurious assert failures. Why this did not result in the test case failing previously is beyond me.
Merge remote-tracking branch 'toddaaro/niots'

Conflicts:
	src/libstd/rt/sched.rs
std: Use the same task failure message as C++ rt
Add Either::expect_{left,right}
Add Option::swap_map{,_default}()
Remove redundant Atomic{Ui,I}nt types from unstable::sync
Add AtomicOption::fill() and AtomicOption::is_empty()
Reimplement ARC::unwrap() and friends.
Add UnsafeAtomicRcBox::try_unwrap()
Add KillHandle and implement exit code propagation to replace join_latch
Use KillHandle in Task.
Remove join_latch