- Data flow is now strictly linear from `RawMatcher` to `Matcher`
- I've also hoisted `RawMatcher` in front of `Matcher` to signal this
- Re-type `RawMatcher.case_sensitive` from `bool` to `Option<bool>`
- This moves all parser logic away from `RawMatcher`, making it a more faithful representation of the data
- Favour default consts in `Matcher::try_from<RawMatcher>` to `Default` impl on `Case`
- Because the default choice of casing is a design decision of the logic, not an intrinsic property of the type