Evaluates the matcher for argument item.
This method matches against Object, instead of the generic type T. This is
because the caller of the Matcher does not know at runtime what the type is
(because of type erasure with Java generics). It is down to the implementations
to check the correct type.
Parameters:
item - the object against which the matcher is evaluated.
Generate a description of why the matcher has not accepted the item.
The description will be part of a larger description of why a matching
failed, so it should be concise.
This method assumes that matches(item) is false, but
will not check this.