* Get rid of boxing inside Async<>
We want Async<T> to always impl Unpin. Turns out, boxing the inner value
is unnecessary for this; and as we never pin the inner value, we can just
implement Unpin for ourselves explicitly.
See https://doc.rust-lang.org/std/pin/index.html#pinning-is-not-structural-for-field
on why this is safe and sound :)
* Do not box streams
Unfortunately, this means we also don't automatically pin them.
The caller can manually pin them (using the pin! macro, or Box::pin(),
or any other method) if needed. That is a slight API break.