Changes in the C++ API.

1. Modify way how native functions work in the C++ API by changing the
   return type to `void` and adding additional argument `frame` which is
   the stack frame of currently executed function.

   The `Frame` class now contains the value returned by the function. It
   can be set with `SetReturnValue` method. This way GC can find and
   mark values returned by function calls, which hopefully reduces GC
   related bugs.
2. Also modify `FunctionObject` so that the `Invoke` method returns
   `bool` and accepts a `Slot` value as argument where value returned by
   function call will be assigned to.