websession 0.12.1

Web Session Support for Rust
Documentation
These are incomplete and will be moved to an `examples directory` when they're
in better shape.

```rust
use std::fs::{File, OpenOptions};

use websession::{Authenticator, FileBackingStore};

let filename = "./etc/passwd";

// Ignore the result; if this fails, it may be because the file exists.
// If something else is wrong, the FileBackingStore will (eventually) find out.
let _ = OpenOptions::new()
    .write(true)
    .create_new(true)
    .open(filename);

let fbs = FileBackingStore::new_with_cost(filename, 8);
let new_user = "username";
let new_pass = "correct horse battery staple";
fbs.create_plain(new_user, new_pass)?;

// ...

let user = "username";
let pass = "correct horse battery staple";
match fbs.verify(user, pass) {
    Ok(true) => println!("user {} authenticated", user),
    Ok(false) => println!("bad password!"),
    Err(BackingStoreError::Locked) => println!("user {} is locked", "username"),
    Err(e) => println!("Error: {:?}", e),
}
```