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
Extract methods for each of the non-matching cases
Merge pull request #173 from troessner/improve-smell-of-matcher

Improve SmellOfMatcher