Add a variant of home_for_io that consumes the handle. Refactor out common parts of the home_for_io variants.
Split out starting a listener from accepting incoming connections.

The Listener trait takes two type parameters, the type of connection and the type of Acceptor,
and specifies only one method, listen, which consumes the listener and produces an Acceptor.

The Acceptor trait takes one type parameter, the type of connection, and defines two methods.
The accept() method waits for an incoming connection attempt and returns the result.
The incoming() method creates an iterator over incoming connections and is a default method.

Example:

let listener = TcpListener.bind(addr); // Bind to a socket
let acceptor = listener.listen(); // Start the listener
for stream in acceptor.incoming() {
    // Process incoming connections forever (or until you break out of the loop)
}
Fix ICE when calling static and static function pointers

Fixes #8588
Fixed -Z print-link-args
Add assertions and cross crate tests
std::str: Bench test for char iterators
std::str: Small fix for slice
std::str: Special case char_range_at_reverse so it is faster

Implement char_range_at_reverse similarly to char_range_at, instead of
re-using that method.
std::str: Add str::raw::slice_unchecked

Add a function like raw::slice_bytes, but it doesn't check slice
boundaries. For iterator use where we always know the begin, end indices
are in range.
std::str: Implement CharIterator separately

Let CharIterator be a separate type from CharOffsetIterator (so that
CharIterator can be cloned, for example).

Implement CharOffsetIterator by using the same technique as the method
subslice_offset.
std::str: Use CharOffsetIterator in .find() and .rfind()
std::str: Correct docstrings for lack of null terminator in ~str and &str
std::str: Only check char boundary for end index in .slice_to()
std::str: Use CharOffsetIterator in slice_chars
std::str: Improve comments for CharIterator
Fix some parsing errors in extra::url

Fixes issue #8612.
std::str: Use iterators instead of while loops for CharSplitIterator

Embed an iterator in the CharSplitIterator struct, and combine that with
the former bool `only_ascii`; so use an enum instead.
Remove discriminant symbols.

Given that bootstrapping and running the testsuite works without
exporting discriminant values as global constants, I conclude that
they're unused and can be removed.
Don't skip token after @'static

Fixes #8615.
Fix broken rusti

Commit 0932ab336 accidentally broke rusti by making it parse the binary
name as the input, instead of parsing what the user typed.