lua: Add string() support and :echo {} support
tests: Add funcref type conversions and operator tests
translator/lua: Refactor function calls support

- Record l:self.
- Create binding in subscript.subscript, get rid of special subscript.func
  function.
- Add bound function type.

Previous solution did not work.
tests: Start adding :function tests for function definitions
testhelpers: Show translated code if NEOVIM_SHOW_TRANSLATED_LUA is set
translator: Assign a: scope values
tests: Add tests for some a: access

Only positive tests currently, no tests for exceptions (as they are not
implemented anyway).
tests: Add :unlet! test
parser: Improve documentation in parser/ex_commands.h
*: Get rid of char_u where possible

Macros near the top of the file that redefine “external” char_u users are some
sort of TODO list that lists things that need to be replaced or adjusted.
*: Replace some strings.h functions with memory.h/string.h ones
*: Save offsets in expression nodes

Saves expression in functions from expression.c in place of parsing newly
allocated string in ex_commands.c.h. One of the alternatives is saving (start,
len) pair in place of (start, end). (start, end) in the current state was a bit
easier to refactor to.
translator/lua: Add support for :let+= operation with lists
translator/lua: Use vim.iter for :for loop

Adds proper error reporting and makes it easier to add iterators or lazy lists.
tests: Add two :for loop tests
parser: Record skips (removed escape characters) in get_cmd_arg

Untested. Will be used for computing error offsets.
testhelpers/lua: Move some helpers code to vim.lua
lua: Check for new/modified globals in test.finish
*: Use function that saves parsed strings in a number of places
parser: Remove file name from CommandPosition, add it to ParserResult