Refactor var_context in lua-ast to use context data
Fix simple error in context_free implementation for variables
In Lua AST add a check index instruction only if expression is context free

Normally an expression is verified to be context free only when trying
to move bound checks outside of for body.

This avoid generating check index instructions when an index expression is
a global or a local variable.
Cosmetic code simplification in lua-ast var_context function
Rename property "mutable" to "num_const" in lua-ast
Introduce a check to verify that a value is numeric in var_declare

Introduce also the function var_declare_num to declare a numeric
variable without a specific value to be used only in numeric "for"
loop.

With this modification the "num_const" field will be "true" only if
a variable is non-mutable and is known to be numeric.

NB: There is a problem with for loops because an outer local variable
can be changed in the body of the for loop *after* the check and yet
the value should be considered mutable because the loop came back
to the initial instruction. This problem is not related to this
commit.
Remove context_free checks for CheckIndex limits in lua-ast

They are removed because "context_free" check if a variable is numeric
and not mutable and this is strictly required only for the matrix
indexes themselves.
WIP: improve logic of check index code
Fix recursion rule with check index rules
Improve a comment in lexer
Ensure that front-end function to print expressions only return a string
Add more tests for matrix check indexes rules