Takes the same arguments as the update method in the builtin dict
        class. However, this version returns a new ImmutableDict instead of
        modifying in-place.

def update(self, other=None, **kwargs):
        '''Takes the same arguments as the update method in the builtin dict
        class. However, this version returns a new ImmutableDict instead of
        modifying in-place.'''
        copydict = ImmutableDict()
        if other:
            vallist = [(hash(key), (key, other[key])) for key in other]
        else: vallist = []
        if kwargs:
            vallist += [(hash(key), (key, kwargs[key])) for key in kwargs]
        copydict.tree = self.tree.multi_assoc(vallist)
        copydict._length = iter_length(copydict.tree)
        return copydict