Wraps and consumes an arbitrary dictionary into the model.

def wrap(self, data):
        """
        Wraps and consumes an arbitrary dictionary into the model.
        """
        for name, field in self.fields:
            try:
                self._state[name] = field.consume(
                    self._state.get(name, None), data[name])
            except KeyError:
                self._state[name] = None