Fix regression in `contain_exactly`.

The new implementation in 3.0.0 allowed this to pass:

expect([1]).to contain_exactly()

The problem was that the `actual_matches` hash was lazily
initialized in an `expected.each_with_index` loop. This
meant that if `expected` was empty, `actual_matches` would
be made empty as well, causing the match logic to pass.

Fixes #581.
Merge pull request #582 from rspec/fix-contain-exactly-regression

Fix regression in `contain_exactly`.
Add more helpful error message for `change`.

When change was called with a single argument and no block, the
message to be sent to the receiver defaulted to nil, causing an
unclear failure message.

Fixes #584.
Merge pull request #585 from AgentAntelope/master

Add more helpful error message for `change`.
Changelog for #585.

[ci skip]
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.
Changelog entry for #578
Benchmarks on contain_exactly
Add a spec for in order hashes for contain_exactly
Implementation and spec cleanup for #578
Merge pull request #578 from rspec/fix-574

Make `contain_exactly` work with out of order hashes.
Forwardport 2.99.1 release notes.

[ci skip]
Forwardport 3.0.2 release notes.

[ci skip]
fixed customized_message.feature
reformat implicit docstrings
format implicit_docstrings
format implicit_docstrings
more proper formatting
format equaily feature
format built_in_matchers/README.md