translator/lua/tests: Support :throw command
translator/lua/tests: Improve :function definition support

Now user-defined functions support E118 and E119 error messages (not enough/too
many arguments).
testhelpers: Fix one memory leak
translator/lua: Record some function properties

Will be later used for :function without arguments, string() and so on.

Function properties are recorded in ephemeron table, so I do not have to care
about GC’ing them. Exact set of recorded options:

1. Function name.
2. Starting position (line number and column) of the first child of :function.
3. Position of the character just before `:endfunction` command.
4. Function arguments (stringified version).
5. `dict`, `abort` and `range` attributes.
6. `state.code` and `state.fname`.

Reasoning:

- 1 till 6 will be used for `:function Func` implementation. It looks like this:

           function {1}({4}){" abort" if 5.abort}{" range" if 5.range}{" dict" if 5.dict}
           {"        Last set from "..6.fname if verbose and 6.fname:sub(1, 1) ~= '<'}
        1  {6.code[2.line]:sub(2.column, -1)}
        …  {6.code[2.line + 1] till 6.code[3.line - 1]}
        N  {6.code[3.line]:sub(1, 3.column)}
           endfunction

  . More understandable example:

           function d.Abc(a, b, ...) range
                   Last set from ~/foo.vim
        1    echo a:a
        2    echo a:b
        3    return a:000
           endfunction
- 1. will be used in error messages (except for E118/E119 where exactly the same
  value is embedded by the translator without requiring to use value from
  ephemeron table).
- 5.dict will be used to raise E725 (calling dict function without
  a dictionary).
translator/lua: Fix dictionary functions support

Mostly untested. Should fix conditions under which bound functions are created:
previously d.Abc() did not create bound functions, but d['Abc'] always created
bound functions, even if it is was a simple subscripting.
lua: Raise E725 error when appropriate

This error is raised when trying to call dict function without a dictionary.
lua: Add call() function support

Untested as usual
tests: Test for some intentionally incompatible behavior
lua: Remove val_position values that are never assigned or used
lua: Finish string support: support stringifying funcrefs
tests: Add string() function tests
lua: Support echoing funcrefs

In Vim `:echo function('tr')` echoes `tr`, not `function('tr')`.
lua: Record globals at the very beginning of the file

Should catch globals that were accidently created below, in vim.lua. The only
exception is `vim` global: it is created just after `vim.lua` is loaded.
testhelpers/lua: Also test for differences in state

Tests should not alter used state: all variables and functions should be
deleted
translator/lua: Add support for :function abort
translator/lua: Fix exception handling: pcall() returns 2 values

Do not know where I have seen 3.
tests: Check function return values
parser/tests: Allow :call to accept only function calls

For ranges support I will need to obtain function reference separately from
function arguments.
translator/lua/tests: Add basic support for :call command

Not done: range handling (ranges are globally not supported now).