text: Title: dirty-equals causes a infinite-loop if it is used with `functools.singledispatch`
  Body: The following code causes a infinite-loop inside `functools.singledispatch`
  
  
  ``` python
  from dirty_equals import IsStr
  
  from functools import singledispatch
  
  
  @singledispatch
  def dispatch(a):
      print("generic", a)
  
  
  s = IsStr()
  dispatch(s)
  ```
  
  It looks like this is caused by the fact that `IsStr == IsStr` is `False`.
  
  I already created a pull-request, please let me know if this can be fixed this way.
  