Fix expect syntax to properly forward do..end blocks.

Previously, `do...end` blocks were forwarded to
`MessageExpectation#initialize`, such that something like this:

allow(obj).to receive(:foo).with(1) do
  :return_value
end

...was translated into:

obj.stub(:foo) { :return_value }.with(1)

In practice, this caused a confusing/wrong "you are overriding
this stub" warning.

Our fix is to forward them on to the last method in the matcher
chain. This ensures that it gets forwarded to the method the user
intends.
Fix warning to only be emitted when it is true.
Improve stub override warning message.

- Mention what method's stub is being overridden.
- Include the call site.

The old message was:

You're overriding a previous implementation for this stub.

…which doesn't give you much to go off of.
Remove old invalid comment.
Document implementation classes as private.
Add changelog for #477.
Add changelog entry.
Merge pull request #481 from rspec/fix-override-warning

Fix override warning