[#62905634] Immutable Core::Vm class

This makes Core::Vm immutable on @id and @vapp (D.I'd Vapp object), bringing it closer to the rest of the Entity classes.

There is still some opinionated code in Vm.rb however, particularly surrounding the use of the injected Vapp object. I'd rather not overcomplicate this PR with that work though, and tbh would like to pair on it, as it has wider implications.