Implement more complete `contain_exactly` algorithm.
Fail match rather than error from `start_with` and `end_with`

…when the given object can't be indexed or is not ordered. We
want to be able to pass an alias like `a_collection_ending_with`
to a collection matcher (like `include`) which may contain
multiple types of objects, some of which can be indexed and are
ordered, and some not. We don't want an early `ArgumentError`
for these cases -- instead, it should just be treated as
not matching.
Add pending spec showing perf issue.