Improve SmellOfMatcher

This change improves SmellOfMatcher in the following ways:
- Correctly report no match if smell properties do not match
- Improve message when smell properties do not match
- Clean up code to clearly show different ways matching may fail

On Ruby 1.8.7, this improved SmellOfMatcher revealed an implicit
dependency on the hash key ordering being guaranteed:
- Explicitely sort smells detected within a single context by
  DuplicateMethodCall and UncommunicativeModuleName