Added sketch for VM

DO NOT MERGE
This is just a sketch.
Please comment.
activation records / stack frames should be heap allocated, because local variables and arguments might be referenced by closures created in that context.

As discussed offline, the simplest approach is to reuse v7 objects as activation records for all invocations, and chain them via the afore mentioned parent context pointer. The activation records in the "stack" will be reclaimed by the GC (whether the GC is ref-count or mark&sweep is orthogonal to this).

Hence please replace the `call_stack` with a single `struct v7_object *` (or `struct v7_value *` ?) pointing to the current activation record (i.e. top of the call stack).