Abstract Virtual Machine Support in byterun

I used byterun as the basis for an abstract VM for some work here at Google and I wanted to offer the changes back to you. This also fixes some bug, notably classes work correctly after the first commit. However the bulk of the changes are to allow abstract interpretation to be done.

-Arthur Peters (working from inside Google)
If you could expand these TODO's into GitHub issues, we have a better chance of fixing them in the future.  For example, do you know under what circumstances this is incorrect?