fix bug with ConsistOf when given matchers

Fixes the issue with ConsistOf where the order of the expected list can lead to a false negative when using matchers in that list.

It works by treating the actual values and expected matchers as halves of a bipartite graph, and checks for a perfect matching, using the Hopcroft-Karp algorithm, which has runtime complexity O(n^2.5).