Improve the accuracy of parenthesis for expression in lua codegen

With this modifications the parenthesis are generated only for
expressions where they are strictly required. The new rule take into
account the difference between left and right priority in the Lua
parser. The two priority can differ for right associative operations
like the power "^".
Implement new Lua interface parsing and use it for "use" statement

Now the ast.probe function is no longer used to probe the parent Lua state.
Instead the interface file (extension ".ilua") is parsed to obtain a list
of the symbols defined in a module.
Modify the "use" statement to emit a "require" statement

Now the statement:

use "math"

is translated into:

local __1 = require("math")
local sin, pi, cos = __1.sin, __1.pi, __1.cos

Note that the util.genid symbol can potentially conflict with other local
variable names. A better solution is required.
Avoid using util.genid in bytecode module
Factor genid code in a separate file and make it re-entrant
Implement a safe identifier generator to avoid conflicts with locals
Merge remote-tracking branch 'lang-toolkit/master' into new-use-stmt
Use lexical identifier generator in AST building module

The lexical generator guarantees that no conflict can happen between
generated identifiers and user defined variables.
Avoid creating error in luacode generator with empty local declaration
Avoid using the same AST object between different codegen sessions