Fully reflective execution environments: virtual machines for more flexible software