Use the differ to print diffs when args are mismatched between expectations and calls

Related #434. This uses the differ that is now in RSpec support to
perform argument diffing when arguments don't match.

Things worth noting/still to do:

* Special case behaviour needs to be added for the no arguments matcher
  and the any arguments matcher, at the moment something like this:
```
       @@ -1,2 +1,2 @@
       -[#<RSpec::Mocks::ArgumentMatchers::NoArgsMatcher:0x000001024ec728>]
       +[{:bees=>:foo}]
```
  gets printed, and that's obviously not great.
* Need to work out what to do in the "similar args" case where there are
  potentially multiple calls. I think the best thing to do would be to
  would be to only diff if there's one call. (@myronmarston maybe has thoughts?)

There's some refactoring that could be done here but I want to finish
implementing the "similar args" implementation before I do that so that
I'm sure that I'm refactoring the right thing.

Also: needs more specs.
It feels like this could benefit from being organized with nested descriptive contexts:

``` ruby
RSpec.describe "Diffs printed when arguments don't match" do
  context "with a non-matcher object" do
    context "that defines `description`"
  end

  context "with a matcher object" do
    context "that defines `description`"
    context "that does not define `description`"
  end
end

# etc
```

Thoughts?