an attempt at a singleton pausible idle callback for each scheduler. suffers from nondeterministic deadlock and also pending scheduler messages on scheduler shutdown.
std::rt: Touch up idle logic
std::rt: Fix a race in UvRemoteCallback's dtor that misses callbacks

Full description in comments.
Moved the logic for a pausible idle callback into a new type - PausibleIdleCallback and placed the appropriate signatures in rtio and implementation into uvio.
A round of code cleaning for the primary scheduler code. Comments have been updated, a minor amount of support type restructing has happened, methods have been reordered, and some duplicate code has been purged.
fix for #8088 (Cannot name a struct field `new` due to ancient syntax)
remove code for parsing ancient syntax
added a run-pass test
Fix segfault when calling tuple struct constructor as extern fn

Fixes #5315
extract_grammar symnames

add missing symnames

Signed-off-by: Jan Kobler <eng1@koblersystems.de>
insert space

in the rust grammar

to avoid error messages like this:

  Exception: non-alpha apparent keyword: pub"

when using extract_grammar.py:

python2.7 src/etc/extract_grammar.py <doc/rust.md

Signed-off-by: Jan Kobler <eng1@koblersystems.de>
Add assertions to test
Delete std::rt::io::net::http

It's an empty stub and as one of the comments notes, doesn't belong in
libstd.
Rangechange the log message truncation limit.
Make supertrait methods callable on object types.

This requires changes to method search and to codegen. We now emit a
vtable for objects that includes methods from all supertraits.
Closes #4100.

Also, actually populate the cache for vtables, and also key it by type
so that it actually works.
clean whitespace :/
Derive Clone for IpAddr and SocketAddr
Do not execute the callback before cleaning up resources.
Instruct event loops to ignore SIGPIPE when constructed.

libuv does not always catch SIGPIPE.
Working homing UDP socket prototype.
Homed UDP sockets
Make IO thread-safe.

Each IO handle has a home event loop, which created it.
When a task wants to use an IO handle, it must first make sure it is on that home event loop.
It uses the scheduler handle in the IO handle to send itself there before starting the IO action.
Once the IO action completes, the task restores its previous home state.
If it is an AnySched task, then it will be executed on the new scheduler.
If it has a normal home, then it will return there before executing any more code after the IO action.