Added sketch for VM

DO NOT MERGE
This is just a sketch.
Please comment.
FTR, bitfields are standard C.
However it doesn't pack (`sizeof(struct { unsigned x : 1 }) == 4`, `struct { char x : 1 }` is a GNU extension) nor guarantees the ordering of the bit fields within a word; but we don't care of both problems, so bit fields would be fine in this case.

However it's nice to be able to pass flags as parameters.