What is a virtual machine (VM)?