Preserve all spaces aggressively

- Merge `past.after` and `rule.before` to `rule.first.before`
- Override `past.after` with `rule.after`
Fix test cases