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)
lua: Improve modulo by zero support

According to :h expr-%

> When the righthand side of '%' is zero, the result is 0.
lua: Make modulo with negative numbers behave like in Vim

n1 | n2 | n1 % n2 (Vim) | n1 % n2 (lua) | Difference
-- | -- | ------------- | ------------- | ----------
 1 |  2 |       1       |       1       |   absent
-1 |  2 |      -1       |       1       |     -+
 1 | -2 |       1       |      -1       |     +-
-1 | -2 |      -1       |      -1       |   absent

I do not see this behavior mentioned in help though.
lua: Disable modulo operator for floating-point values
lua: Add support for hexadecimal numbers in string
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