oopsie 0.1.0-rc.4

Ergonomic, structured error handling: context selectors, traced errors, and rich colorized reports
Documentation
Marks this field as the chained source error, supplied to the selector at
construction (via `.build_error(source)` or `.context(...)`) rather than being a
selector field. A field named `source` is detected automatically; use `from` to
mark a differently-named field. `from(false)` opts a `source`-named field out.
`from(Type, transform)` accepts a `Type` and stores `transform(value)`; a
`Box<T>` source is auto-unboxed so the selector takes `T` directly.

Forms: `from`, `from(true)`, `from(false)`, `from(Type, transform)`.

### Example
```
use oopsie::Contextual as _;

#[oopsie::oopsie]
#[oopsie(module(false))]
pub enum AppError {
    #[oopsie("read failed")]
    Read {
        #[oopsie(from)]
        cause: std::io::Error,
    },
}

let err = Read.build_error(std::io::Error::other("disk"));
assert_eq!(err.to_string(), "read failed");
```