What SPLObjectStorage Should Have Been