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 "^".
Factor out in a separate module the parser helper functions
First preliminary version of interface reader
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
Fix missing identifier report to lexical genid in AST builder
Fix errors with variables and scope declaration in parser
Add interface function for the math and string modules
Modify interface parser to accept prototypes with variable arguments
Include some "use" statement tests
Add GSL Shell language hooks in FOX GUI
Modify interface parser to accept nested optional parameters
Modify the interface parser to accept documentation string