Add vim's swap files into ignore
I forgot about break! How could I!

Too bad, it seems I'm forced to use random lookups into the
instructions list now - that's the only way to distinguish for
iterator loop from ordinary jump.

Plus I forgot about UCLO jump capabilities - it's essentially a JMP for
our cause.
Fix invalid returns count

All instructions but RETM should have D-2 returns
Reorder internals for RepeatUntil node

Otherwise we can't guess right slot names - they are defined in
the block part, but used in the expression part
Fix local variables not being marked as such.

A problem was in the fact that LuaJIT marks local variable
starting with a instruction after a LOGICAL assignment block. I.e. after
all the instructions emitted by the assignment block.

That is: local a = 1 will setup the debuginfo for the "a" variable
starting from the last-emited + 1 instruction, but
local a1, a2, ..., a100 = 1, 2, ..., 100 will setup the debuginfo for
all the a* variables starting from the last-emited + 100 instruction.

The solution is to defer the locality assumption until the first slot
use. This way we can't mark an assignment node as being a local
definition so we have to move this functionality into the optimizer
Validator: allow function calls and a vararg in a records list

But only at the end of the list
Rewrite an optimizer into the mutator - the generic AST mangler

Implement the assignment -> local definition mutation (moved from the builder)
Implement the slot elimitation
Implement the MULTRES elimination

TODO: logical expressions elimination