`tostring()` was delegating to `luaToString()` which calls `__tostring`
with a dead stack frame, breaking metamethods that call back into
globals. Now `tostringFunction` receives the live stack frame, looks up
`__tostring` via `rawGet`, calls it through `luaCall` with the live
frame, and validates the return is a string.
Also add tests covering the basic case, the nested-call case, and the
error path for a non-string return.
Signed-off-by: Matouš Jan Fialka <mjf@mjf.cz>