move type-checking to ReflectivelyEqual

Custom and built-in non-reflective matchers may not necessarily
want ensure that the actual value is the same concrete class
as the expected value.  Collections, in particular, should not
have this enforced.