Cooperative cancellation for async-std.

Status: experimental.

See crate docs for details

You can use this crate to create a deadline received through a StopToken:

```rust use asyncstd::prelude::*; use stoptoken::prelude::*; use stop_token::StopToken;

struct Event;

async fn dowork(work: impl Stream + Unpin, stop: StopToken) { let mut work = work.until(stop); while let Some(Ok(event)) = work.next().await { processevent(event).await } }

async fn processevent(event: Event) { } ```

Or Duration or Instant to create a time-based deadline:

```rust use std::time::Instant; use asyncstd::prelude::*; use stoptoken::prelude::*; use stop_token::StopToken;

struct Event;

async fn dowork(work: impl Stream + Unpin, until: Instant) { let mut work = work.until(until); while let Some(Ok(event)) = work.next().await { processevent(event).await } }

async fn processevent(event: Event) { } ```