This allows implicitly updating the id when altering data, which is very useful in tests of other packages
Depends on !236.
Test Plan
This is missing a bunch of tests; I will write them if you are fine with this idea.
Migrated from D8151 (view on Phabricator)