DictList.pop and DictList.insert smart reindex

Instead of simply calling the reindex function, these functions will
simply update the index in _dict for the value if it has changed.

The object_dict is now no longer needlessly regenerated