Preferring exact type match over interface implementation when finding argument value formatter.

Preferring exact type match over interface implementation when finding argument value formatter, for #142
Also refactored tie-breaking mechanism to use Enumerable.Min() over Enumerable.OrderBy().First. That way we only calculate the distance between types once, and there's no need to maintain a list of all formatters, only to throw all but one away.