Improve composability of collection argument matchers

* Makes array_including able to take matchers as part of its expected argument
* Makes array_including describe passed matchers so that descriptions compose correctly
* Makes hash_including describe passed matchers so that descriptions compose correctly.
That would solve the case for when a matcher doesn't implement `description`, but it doesn't solve the duplication of:

``` ruby
if some_predicate?(v)
  v.description
else
  v
end
```

I think that it would be worthwhile to extract a `description_of(obj)` helper method that would encapsulate the entire expression.

Or, if we decide to re-use the logic that's currently in rspec-expectations (as suggested below), there'd already be something common to re-use.

On a side note, `RSpec::Mocks` is intended to have only public APIs (as it's the top-level module of this gem) so I'd prefer we don't add methods to it that aren't intended to be public APIs.