WIP dictdiffer: addition of diff methods

   
    * This commit is not in a working state (at least not tested), it is just
      there to support the discussion of the RFC dictdiffer#42.
    
    * Adds the option for different diff algorithms.
      Because certain difference algorithms would require the patches to be
      in order, the 'if differ:...' part had to be reworked, which led to
      patches generally having only one value instead of a list of them.
    
    * Adds the option to expand the patch extraction.
You don't need instances if `is_applicable` and `extract` are `@classmethod`s.