Added code to filter out overlapping matches, needs optimisation

This also means that in language definitions, matchers higher up now take precedence, the reverse of the previous situation.