VM interface & factory

Adds polymorphic interface for VM objects. It will allow VM to be replaced by JitVM at runtime.
They are quite short for now, but I plan to include JitVM here depending on some macros probably. Maybe JIT - interpreter selection heuristics later. 

In general, I plan to extend the implementation.