Add test spies

* Adds have_received matcher
* Extends Proxy/MethodDouble/MessageExpectation
* Records all invocations on stubbed methods
Update documentation
Remove any_number_of_times
Intention-revealing name for ignored backtrace line
Remove unnecessary have_received definition
Reformat expectation
Add another example for have_received documentation
Add more cucumber scenarios for spies
Merge branch 'master' into thoughtbot-jf-jq-spies

Conflicts:
	lib/rspec/mocks/framework.rb
Refactor specs to use public instead of private APIs.

- Just use the have_received matcher directly as its intended
  to be used, rather than invoking `matches?`, `does_not_match?`,
  etc. directly.
- Don't test `__mock_expectation` directly. I'm planning to refactor
  things to remove this method, anyway.
- Going through this exercise surfaced a few issues:
  - The failure messages when `with`, `at_least` or `at_most`
    constraints are used are quite confusing and should be improved.
    I left some TODOs in the specs to remind us to come back
    and revisit.
  - The count constraints create confusion when used with a
    negative expectation (e.g.
    `expect(dbl).not_to have_received(:a).at_most(3).times`
    is confusing and isn't specifying much. We should disallow
    them. I left a pending spec for this so we don't forget.
- These changes were necessary to enable the removal of
  `__mock_expectation` (in my next commit) -- the current ones
  were coupled to the implementation, and did not allow that
  refactoring.
Remove __mock_expectation.

We want to limit the number of methods added to all object.
The use of `__send__` to get around this is a code smell
but I believe it's preferable to polluting every object with
an extra method.

This was also necessary to get the spec I added in 512bbbf7c33351332ac147feccda70400d188c60 to pass.
Disallow confusing, negative count constraints
Add cucumber coverage for partial mocks
Fix spy failures on 1.8
Add support for as_null_object with spies
Add special error message when using should_received with a mocked method
Clear messages received when mocks reset

* Proxy objects for class methods/global objects persist between test runs

Fixes #248.
Improve failure message for unexpected arguments
Merge branch 'master' into thoughtbot-jf-jq-spies
Deal with our recent changes to __mock_proxy in master.

Proxies are no longer held internally in each mock'd object.