Stop double-resetting mock proxies.

We don't need to reset the mock proxy while verifying it.
That'll happen later during the teardown phase.

It looks like the main reason we were doing this was
to assist with rspec-mocks testing itself; we would
verify the middle of an example to assert a mock expectation
failure, and a `reset` is needed so it doesn't fail again
when rspec-core calls `verify` as well.

The solution is to use spec helper methods that perform
the reset when we verify in the middle of an example.

I don't have any evidence this improves perf, but it
seems reasonable to assume that removing an extra method
call per example can only make it faster (however slight
the improvement may be).

Fixes #165.
Remove test we no longer need.

The logic that required this test was removed in cd81094a.
Update spec to only specify the behavior we are keeping.

We're going to change the behavior of test doubles
that have been reset (so that they "expire" and can
no longer be used). This spec was originally added in
847c66d55f2ec0ffc56aa27638a3469a03ddab3d where the
point was to address an error while resetting a test
double (which, in turn caused that method double
to stick around into later examples and continue to
fail).
Split spec into two.

The second part of this spec was added in
9357e4de76838157c8ea7d4a4ad6d0ae11882b22. We are
changing test doubles so that they self-destruct
after being reset. Currently, `verify` also
resets, so verifying a test double twice
will no longer be allowed.
Update teardown spec.

We're going to change how pure test doubles behave
after teardown, so update this to focus on partial
doubles (which will not be changed).
Make test doubles self-destruct after the example completes.

Test doubles are not designed to be used outside of
the example they were created in.
No need for ProxyForNil to have its own file.
Centralize error classes in error_generator.rb.

Also, document some of them as public since
users may want to rescue them, or specify
a block will raise one of these errors
(e.g. in an rspec-mocks extension gem).
Move error_space.rb into space.rb

There's no need for a separate file and there's
going to be a bit of interaction between multiple
spaces at various layers in a stack so having it
in one file will make it easier to see how it relates.
Remove an unnecessary layer of indirection.

* This should be faster (but almost certainly not
  noticably so).
* It was odd to expose these methods off of `RSpec::Mocks`
  given that they are not intended for usage outside
  rspec-mocks.
* We weren't getting any benefit from these except
  for not having to type `.space`.
Having a private `pretty_print` method causes problems.

When rspec-expectations tries to diff the object in
a failure message, it blows up when the `pp` library
tries to print it.
Refactor: store const mutators in mock space.

This unifies global storage of modified things in one place.
Re-work spec file a bit.

- Make it more general (it's not just about stubbing).
- Remove unused lines.
- Improve doc output (`include_examples` does not
  create a nested group).
Don't allow const stubbing/hiding from before(:all).
Refactor space tracking so it uses a stack and allows nesting.
Add RSpec::Mocks.with_temporary_scope.

Closes #240.
Clean up expectation ordering.

- It was duplicated in Proxy.
- Makes more sense to initialize it in Space init.
Simplify spec.

rspec-mocks lacks the necessary sandboxing to safely
define and run examples from within examples.
rspec-core has and uses this but it's not exposed
for use here.

Instead, we can just trigger the teardown/setup
that happens between examples.

This fixes some rspec-mocks space leakage
that was happening.
Move mock_space_spec specs into space_spec.rb

Not sure how we wound up with two separate files, anyway.
Remove unnecessary collection clearing.

Since we now use a new space instance per example,
we don't need to clear its collections when resetting.
Before this was necessary because we kept a space instance
that we would keep using for the lifetime of the process.

Constant mutators weren't being reset idempotently, so I
had to tweak them a bit.