Harden the push_varsize instruction

1. Assert heap validity
2. Refactor the instruction for clarity

This is the follow up commit to harder array handling at the push_varsize instruction. No new testcases required
Initial commit with tests: https://github.com/DynamoDS/Dynamo/pull/2516

@lukechurch 

I think you can not init SV here if it's a class (sorry, can't remember). 

i.e. StackValue key;

That will use the compiler to ensure that it is inited in each of the if-else branches before access.