Scope refactoring

This set of patches adds some functionality to the OpenSCAD parser:

* Argument lists are evaluated lazily, allowing variables to depend on each other:
   * ```for (i=[0:2], j=i*2) {...}```
* Variables can now be assigned in any local scope, effectively deprecating the assign() module:
   * ```for (i=[0:2]) {
j = i*2;
...
}```


Test cases are missing

Not supported:
* Assignment over variables in anonymous blocks:
   * ```union() { sphere(); { a = 3; cube(3); } }```


Testing is needed!

NB! The scope of this pull request has changed to provide the infrastructure for local assignments while not yet activating it.