Set more than one value for a given key.
        
        Replaces all the existing values for the given key with new values,
        removes extra values that are already set if we don't suply enough,
        and appends values to the end if there are not enough existing spots.
        
        >>> m = MutableMultiMap(a=1, b=2, c=3)
        >>> m.sort()
        >>> m.keys()
        ['a', 'b', 'c']
        >>> m.append(('b', 4))
        >>> m.setall('b', [5, 6, 7])
        >>> m.allitems()
        [('a', 1), ('b', 5), ('c', 3), ('b', 6), ('b', 7)]

def setall(self, key, values):
        """Set more than one value for a given key.
        
        Replaces all the existing values for the given key with new values,
        removes extra values that are already set if we don't suply enough,
        and appends values to the end if there are not enough existing spots.
        
        >>> m = MutableMultiMap(a=1, b=2, c=3)
        >>> m.sort()
        >>> m.keys()
        ['a', 'b', 'c']
        >>> m.append(('b', 4))
        >>> m.setall('b', [5, 6, 7])
        >>> m.allitems()
        [('a', 1), ('b', 5), ('c', 3), ('b', 6), ('b', 7)]
        
        """
        key = self._conform_key(key)
        values = [self._conform_value(x) for x in values]
        ids = self._key_ids[key][:]
        while ids and values:
            id    = ids.pop(0)
            value = values.pop(0)
            self._pairs[id] = (key, value)
        if ids:
            self._key_ids[key] = self._key_ids[key][:-len(ids)]
            self._remove_pairs(ids)
        for value in values:
            self._key_ids[key].append(len(self._pairs))
            self._pairs.append((key, value))