Huge improvements.

- Use `Result` to use validation.
- Add a test for validation.
- Better design: `rule` no longer returns `Option<String>`, but `Option<&'a str>` instead. Caller can decide
to allocate a new `String` as needed.
Update README about `master` and `without-validation` branches.