*: Start creating viml-lua translator

Progress so far:
- Slightly more then 50% of commands are covered by parsers.
- Almost no commands are supported by translator (mainly supporting block
  (:while/:if/:for/:try)).
- No commands use Vim API.
- No developer documentation.
- Existing implementation was not replaced.

- Top-level parser was created.
- Top-level translator was created, most of commands not covered by translator
  are expected to work automatically once underlying implementation is added.
- Lua bindings have incomplete types support, and complete operator and
  assignment support.

- Most of used functions that are to be documented are documented.

- Lua bindings do not support integers that do not fit into float: luajit
  appears to have integers, but not visible C function for creating them, lua
  5.3 integers support was not tested.
converter: Do not use lua_*integer functions
scripts: Make it build with GCC and macros-generated declarations

GCC may emit declarations like the following:

    static size_t

    # 42 "this/file.c"
    function(args)

for code like this:

    static FDEF(function)

. Declaration generator script does not expect `# …` inside declarations. This
commit makes it treat such things as comments.
translator/tests: Fix format warning emitted by GCC

`%o` format is only used for unsigned integers. Also add test to make sure that
`-octal` is parsed as `(unary-)((octal))`: otherwise translator will have to add
special handling for leading unary minus.
testhelpers: Add code for dumping objects

Untested
translator/lua: Use function that returns top-level state dictionary
translator: Add support for modifying assignments

I.e. let +=, let -=, let .=.
translator: Get rid of indent variables: use lua blocks instead
testhelpers: Add executor test helpers, including Object dumper
tests: Start creating executor tests
tests: Test for failing list assignments
translator/lua: Add support for v:exception
lua: Assume that type functions are always passed correct values
lua: Get rid of non_nil decorator in most functions

It is slow.
lua: Refactor and extend comparison support

In previous state it was too slow and did not work for lists and dictionaries.
lua: Types layout refactoring
tests: Add v:exception tests
lua: Improve numeric operations support

Integer division is rather hacky: math.floor(15 / 7) will return 2 (same as
integer division), but math.floor(-15 / 7) will return -3, while integer
division returns -2.

Thus I use math.floor() on absolute value and then apply sign.
lua: Add number.negate and number.promote_integer

Should be a bit faster then generic versions from scalar dictionary.
lua: Improve integer division by zero

According to :h expr-/ division by zero must have always the same results for
Numbers:

>     When dividing a Number by zero the result depends on the value:
>     	  0 / 0  = -0x80000000	(like NaN for Float)
>     	 >0 / 0  =  0x7fffffff	(like positive infinity)
>     	 <0 / 0  = -0x7fffffff	(like negative infinity)
>     	(before Vim 7.2 it was always 0x7fffffff)