docs: def update(self, E=None, **F):
          '''flatten nested dictionaries to update pathwise
  
          >>> Config({'foo': {'bar': 'glork'}}).update({'foo': {'blub': 'bla'}})
          {'foo': {'bar': 'glork', 'blub': 'bla'}
  
          In contrast to:
  
          >>> {'foo': {'bar': 'glork'}}.update({'foo': {'blub': 'bla'}})
          {'foo: {'blub': 'bla'}'}
  
          '''
          def _update(D):
              for k,v in D.items():
                  if super(ConfigDict, self).__contains__(k):
                      if isinstance(self[k], ConfigDict):
                          self[k].update(v)
                      else:
                          self[k] = self.assimilate(v)
                  else:
                      self[k] = self.assimilate(v)
  
          if E is not None:
              if not hasattr(E, 'keys'):
                  E = self.assimilate(dict(E))
              _update(E)
  
          _update(F)
  
          return self