Converted asserts into exceptions

Including PoC7 commands in tests
Added more vm tests

This is a pretty useless exception: firstly this is top-level user code, secondly it's completely abstract. Recovery or whatever other handling must be done locally. In this case, you'd probably just return from the function. See my comment in #361 over how assertions should be handled in general. This goes for many of the other changes in this merge.