We care if one of two things happens:

      * d2 has added a new key
      * a (value for the same key) in d2 has a different value than d1

    We don't care if this stuff happens:

      * A key is deleted from the dict

    Should return a list of keys that either have been added or have a different value than they used to

def _dict_compare(d1, d2):
    """
    We care if one of two things happens:

      * d2 has added a new key
      * a (value for the same key) in d2 has a different value than d1

    We don't care if this stuff happens:

      * A key is deleted from the dict

    Should return a list of keys that either have been added or have a different value than they used to

    """
    keys_added = set(d2.keys()) - set(d1.keys())
    keys_changed = [k for k in d1.keys() if k in d2.keys() and d1[k] != d2[k]]
    return list(keys_added) + keys_changed