Fix Heap-use-after-free in Interpreter::evaluate (#946)
Fix Heap-use-after-free in Interpreter::evaluate (#946)

The reference to `rhs` might be invalidated by the call to `toString`,
as `toString` might (eventually) call `stack.newFrame`. `newFrame` calls
`vector::emplace_back`, whose documentation includes:

```
If the new size() is greater than capacity() then all iterators and
references (including the past-the-end iterator) are invalidated.
Otherwise only the past-the-end iterator is invalidated.
```

Moving the `rhs` declaration after the call to `toString` ensures that
we're not holding an invalidated reference. Since `toString` is supposed
to return the stack the same size it was at the beginning of the call,
moving the `rhs` declaration down should not change its value.

Fixes:
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=15888
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=15970
google/jsonnet,google/jsonnet,google/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet,google/jsonnet,google/jsonnet,google/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet