Previously, every call to updateSizes() would update every entity. Now, entities
can be marked as dirty, and updateSizes can be called such that it only affects
dirty entities. I changed a few calls to updateSizes to take advantage of this,
but others can probably be optimized too