tests: Start creating operator tests
translator/lua: Add :unlet and :delfunction support

No tests yet.
tests: Use :unlet to fix tests

Problem: blocks.lua tests are executed after assignments.lua, but require g:a
variable to be undefined. Assignments tests define this variable though.
tests: Add some :unlet tests
tests: Start adding type conversions tests
lua: Add support for function() function
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.