Remove ChanOneHack/PortOneHack extra allocation
Optimize try_recv to not require the two context switches when data is available.
Implement select() for new runtime pipes.
Add test cases for select
Add a better-for-testing optimistic_check() for pipes with cfg(test).
(cleanup) Fix unimplemented message for kill_all in newsched.
Unkillable is not unsafe. Close #7832.
UnsafeArc methods return unsafe pointers, so are not themselves unsafe.
auto merge of #8008 : bblum/rust/select, r=brson

Main logic in ```Implement select() for new runtime pipes.```. The guts of the ```PortOne::try_recv()``` implementation are now split up across several functions, ```optimistic_check```, ```block_on```, and ```recv_ready```.

There is one weird FIXME I left open here, in the "implement select" commit -- an assertion I couldn't get to work in the receive path, on an invariant that for some reason doesn't hold with ```SharedPort```. Still investigating this.