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.
It's mostly to deduplicate the arrays, this could also be `.uniq`. It's equivalent to just using the arrays, but will perform fewer comparisons overall in cases where we're passed duplicate arrays.