Move the get_jump_destination into a common scope for a future use
primitive.lua: Adjust some test cases for the clarity
Add the bytecode patching to simplify a block processing
debuginfo.py: add this line already

The pep8 checks in the pydev...
Add block and warp nodes
Add blocks support to the writer
builder: fix NILs being FALSEs
Fix some slots being wrongly marked as local vars
builder: build blocks instead of an AST directly

... so we can adjust the control flow later,
after the elimination phase

Require the patching phase to achieve a consistency
of a loops behaviour.
Rewrite the mutator into the eliminator

Now it handles only the slot elimination phase and works on the
per-block basis. So we assume that temporary slots are not shared
between blocks. That's mostly true, but some loops cases require
instruction patching to achieve the condition above.
main: Pass the warped boolen explicitly
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