Fix to allow matching a query fragment multiple times in the same line

Should fix #39, along with a refactoring, and a slight typo in CaseSenstiveMatcher.String()