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)
This code looks a lot like the stuff I wrote for coverage.py! :)  For example: https://bitbucket.org/ned/coveragepy/src/e8d9a454b1403a35dc4103a8cd836f7dbb5686f2/coverage/parser.py?at=default#cl-334  Hmm, maybe I should "branch" out if my life is repeating like this! :) I'll have to look into how the two compare...