Make `contain_exactly` work with out of order hashes.

The reason that this was failing is that `contain_exactly` assumed that
its `expected` value was a matcher. As such it was using === to compare
the expected value with the actual value. This is completely correct for
matchers. However, when a hash is passed the implementation of === will
not match the actual value at all. Hash === won't invoke the RSpec
matchers.

This fix uses the lower performance values_match? which correctly
matches when hashes are provided.

Fixes #574.
Given the comment above about perf did you consider using `e === a || a == e || values_match?(e, a)`?