Golang version VM

Rewritten from scratch.