VM interface & factory

Adds polymorphic interface for VM objects. It will allow VM to be replaced by JitVM at runtime.
It's my style. I leave "Type" name for language types like `IntegerType`, `llvm::PointerType`. It's reasonable when you write compilers.