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.
Actually, I just remembered that `description` is an optional part of the rspec matcher interface, so a valid matcher may not respond to `description`.  Thus, I think we actually do need to keep this method (although, it should be renamed to have a `?` on the end...), and its logic should be:

```ruby
RSpec::Support.is_a_matcher?(arg) && arg.respond_to?(:description)
```

Your `diff_message` method above should then use this method as well.