Combine mocking on any instance cukes
Use expect syntax more consistently
Speed up double creation with multiple attributes by caching caller.

Benchmark results for creating a double with n attributes:

     n | before | after
    ---+--------+-------
     0 | 0.01   | 0.04
     1 | 0.11   | 0.11
     2 | 0.24   | 0.16
     3 | 0.39   | 0.22
     4 | 0.62   | 0.29
     5 | 0.88   | 0.35
     6 | 1.34   | 0.51
     7 | 1.77   | 0.51
     8 | 2.59   | 0.72
     9 | 3.33   | 0.84
Extract constant ArgumentListMatcher::MATCH_ALL.

As well as being semantically clearer, this gives a modest speed up
(~5%) when creating doubles with multiple attributes.
Introduce "simple" stub as an optimization over using a normal stub.

This provides a decent speed improvement when creating doubles with
multiple attributes:

     n | before | after
    ---+--------+-------
     0 | 0.04   | 0.04
     1 | 0.09   | 0.08
     2 | 0.17   | 0.12
     3 | 0.20   | 0.16
     4 | 0.26   | 0.18
     5 | 0.32   | 0.23
     6 | 0.40   | 0.29
     7 | 0.55   | 0.40
     8 | 0.65   | 0.40
     9 | 0.78   | 0.46
Extract CallerFilter class to unify caller manipulation.
Remove unused arguments from simple stub interface.

Not having to run `caller` makes a big difference in performance.
Add benchmark script.
Changelog entry covering all double performance enhancements.
Merge pull request #401 from xaviershay/issue-193

Improve performance of double creation.
Benchmark of transfer_nested_constants option.

Shows a non-trivial performance impact.
Address warnings.

rspec-mocks/lib/rspec/mocks/caller_filter.rb:41: warning: shadowing outer local variable - line

rspec-mocks/spec/rspec/mocks/verifying_double_spec.rb:195: warning: assigned but unused variable - dbl2
Don't unnecessarily subclass Hash.
Merge pull request #407 from rspec/remove_hash_subclassing

Don't unnecessarily subclass Hash.
Fix behaviour for simple stubs when stubbing core methods.
Merge pull request #404 from xaviershay/issue-403

Fix behaviour for simple stubs when stubbing core methods.
Illustrate bug with current ancestor approach
Candidate fix for #258.
Add a benchmark for finding the original method early.
Refactor to improve perf.

- Don't get the original method handle for a test double
  (it doesn't have an original method as its not a partial mock).
- Leverage InstanceMethodStasher; since it has to stash the method
  anyway, it can store it so we don't have to waste effort getting
  it.
- Delay getting the original_method until the last possible moment:
  right before we redefine it with a new definition.

As a side benefit, this change makes it so that we no longer
"leak" odd obfuscated aliased methods onto partial mock objects.
This is a good thing.

I ran benchmarks of this commits vs the prior (unoptimized fix)
vs what we originally had in master using this shell command:

time (for i in {1..20}; do bin/rspec -fp --order default; done)

Here are the totals:

- this commit: 39.070 seconds
- prior unoptimized fix (c864e0a530add6638e404b84d1608652f3882060): 39.936
- master (80d80d919434e6fe0425b3fa5edab49fe28ea9a9): 37.783