Rename the Block::warpsin* attribute into Block::warpins*

Just because I was constantly writing "warpins"
primitive.lua: make one logical expression assigned to a local

To mark the case when there is no undefined slot assignment
builder: unfix the locals marking and add a comment explaining why
builder: invert the order of the numeric loop controls
builder: addd assert on a unary expression type

Just for a consistency with other type checking routines
Move the "blocks" container from the FunctionDefinition into StatementsList

So we can unwarp things in steady fashion without breaking other
functionality
Add an index attribute to the Block

Plus remove the unconditional jump type, because now it's possible to
detect negative jumps with indices
Rename all loops nodes' body attributes from "block" into "statements"

So there is no ambiguity with the Blocks
writer: Don't use parentheses for simple unary subexpressions
patches: move the "apply" function up

For the sake of consistency with other modules
patches: Fix incorrect destinations for JMPs inside a mangled loop
builder: fix a crash on an extremelly simple loop tests

Where loop starts at the first line
builder: Invert the if warp branches as they should be
builder: Invert the IteratorWarp branches as they should be
builder: Fix function calls sometimes being dissected by a wrong locality mark
Add unwarper with basic unwarping functionality