Fixed multiple identical substring matching in StringContainsInOrder

StringContainsInOrder instances might expect multiple occurrences of identical substrings in the string to be matched. However, since this matcher requires all substrings to be *in order*, they must match **distinct** occurrences. This behavior is imposed with this fix.

Example:
`  StringContainsInOrder m1 = new StringContainsInOrder(asList("a", "b", "c"));`
`  StringContainsInOrder m2 = new StringContainsInOrder(asList("a", "b", "c", "c"));`
The matcher `m1` is expected to match `"abc"`, however `m2` is not. Unless this fix is pulled, both `m1` and `m2` matches `"abc"`.