warp-sessions 1.0.1

Generic session middleware for the warp HTTP framework
Documentation
# warp-sessions
This repo provides session middleware for the warp framework that:
- Supports async
- Provides plug-and-play functionality for multiple session backends
- Integrates into existing Warp-style filter chains

## how
```rust
use warp::{Filter, Rejection};
use warp_sessions::{MemoryStore, SessionWithStore};

#[tokio::main]
async fn main() {
    let session_store = MemoryStore::new();

    let route = warp::get()
        .and(warp::path!("test"))
        .and(warp_sessions::request::with_session(session_store, None))            /1.
        .and_then(
            move |session_with_store: SessionWithStore<MemoryStore>| async move {  /2.
                Ok::<_, Rejection>((
                    warp::reply::html("<html></html>".to_string()),
                    session_with_store,
                ))
            },
        )
        .untuple_one()
        .and_then(warp_sessions::reply::with_session);                             /3.

    // Start the server
    let port = 8080;
    println!("starting server listening on ::{}", port);
    warp::serve(route).run(([0, 0, 0, 0], port)).await;
}
```

1. The `warp_sessions::request::with_session(...)` filter is used to bring a session
   into scope of the route handler. This function accepts a type that implements the
   `SessionStore` trait and an optional `CookieOptions` struct to customize the session's
   cookie parameters.
   
2. The `warp_sessions::request::with_session(...)` filter returns a `SessionWithStore<SessionStore>`
   struct. This struct contains the Session struct, a type that implements `SessionStore`, and a
   `CookieOptions` struct. Modifications can be made to the `Session` object within this struct.
   It is returned as part as a tuple at the end of the handler.
   
3. The `warp_sessions::reply::with_session(...)` handler accepts a type that implements
   `warp::Reply` and a `SessionWithStore` struct. It then handles saving any changes made
   to the session and updating the session ID cookie if necessary.