Rewrite of the zerovm execution code

The previous implementation of this rewrite was broken in many ways, and thus was disabled/reverted.

This implementation should fix all of those issues, but since there were no baseline tests in place to very functionality, please test this thoroughly by hand to ensure that all use cases are working properly. (In the first implementation, executing a bar nexe in the manner of `zvsh foo.nexe` did not work, for example.)

Sorry for the code bomb. Things got a little "bulldozer-y".