Added sketch for VM

DO NOT MERGE
This is just a sketch.
Please comment.
[also about the `v7_set_property` and `v7_get_property` below]

Most of the code, internal and external, will have to deal with values, where objects are only one kind of values. We should find an easy way to deal with it, without requiring many conversions.

Object property access should be doable without many conversions and special casing. Accessing any arbitrary property of a primitive type yields undefined, and setting an arbitrary property is not an error but has no effect.

Thus we could have the `v7_create_object` function create a value (either by returning the fat value struct, or by filling it by reference) and the set/get functions also accept values.

Furthermore it shouldn't be too hard to go on with the idea of encoding a whole value into a `double` by using the NaN payload as tag+48 bit pointer. 
Thus I'd avoid over-optimizing the API by avoiding values when we know something is an object from the context, because that's driven only by the current large size of the value struct, which has to be attacked anyways.