use the skipOffsets cache only when a rule can be found in it (highlighter_benchmark 7% faster)
For the moment, a pointer is added in Rule and points either to nullptr or to this. I'm thinking of turning this into a simple integer and sharing all the same regex patterns and keyword lists under the same id which would allow to skip rules without having used doMatch() on them once.