[CS] Move matching from the grammar model into a Method Object

Separates responsibility for evaluating a match to a grammar from the grammar itself
[CS] Switch partial match checking to PCRE

* Use a C extension
* Kill a lot of yucky, poorly performing and error prone code
* Fix failing specs on item repeats for free (had to correct specs, since they were actually wrong).