Add executor test helpers and Object dumper for executor tests
Start creating executor tests
Add support for v:exception
Assume that type functions are always passed correct values
Get rid of non_nil decorator in most functions

It is slow.
Refactor and extend comparison support

In previous state it was too slow and did not work for lists and dictionaries.
Types layout refactoring
Add v:exception tests
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.
Add number.negate and number.promote_integer

Should be a bit faster then generic versions from scalar dictionary.
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)
Improve modulo by zero support

According to :h expr-%

> When the righthand side of '%' is zero, the result is 0.
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.
Disable modulo operator for floating-point values
Add support for hexadecimal numbers in string
Start creating operators tests
Add :unlet support and some code for :delfunction

No actual :delfunction support and no :unlet tests yet.
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.
Add some :unlet tests
Add itoe function for try|…|catch|echo v:exception|endtry tests