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.
I'll include this fix in 3.0.2, so please add this to a `### 3.0.2 Development` section between 3.1.0 and 3.0.1. I've been finding that that works out better for cherry-picking across to 3-0-maintenance.