Disable monkey patching.

Most of this conversion was done with transpec, but I had to
discard some of its changes by hand since we test some
deprecated/disallowed things here.
Merge two example groups.

No need to have two example groups for PositiveExpectationHandler.
Merge pull request #579 from rspec/disable-monkey-patching

Disable monkey patching
Bump version to 3.1.0.pre to prevent confusion with master being 3.0.0 but 3.0.x releases are out.
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