[CS] Auto re-compile Java extension when it's changed
[BUGFIX] Differentiate Match and MaxMatch

* A Match can accept further input while still matching, while a a MaxMatch cannot.
* Matching implementation moved down to C/Java to avoid repeated regex compilation and confusing jumping about.
Merge branch 'feature/max_match_support' into develop