utilities: List::erase should return an iterator pointing to the next item, and never return an iterator that references a freed object.