VM interface & factory

Adds polymorphic interface for VM objects. It will allow VM to be replaced by JitVM at runtime.
empty lines where they're in the same notional section. blank lines are good to separate out notional sections in a method list: typical notional sections are:

normal contructors & destructors

copy-constructors & assignment operators

other operators

methods related to one aspect of use

[methods related to some other aspect of use]...