ConverterMatcher allows to match converters to classes by
determining if a given type can be converted by the converter instance.
ConverterMatcher is the base interface of any converter.
To aid debugging, some components are passed an ErrorWriter
when things go wrong, allowing them to add information
to the error message that may be helpful to diagnose problems.