Detect double declarations

The compiler passes would ignore multiple declarations of a references within the same block:

    var foo = 1
    var foo = 2

The problem would only be detected at bytecode-generation time with ASM throwing out-of-bounds
exceptions.

This commit provides a fix for that. It also introduces the marking of local references as
synthetic, like those generated for loop iterators. This is used in the problem detection since
these variables behave marginally differently from those defined by programmers.
Allow lax imports

Lax imports widen the range of valid imports in Golo, as in:

    import java.util
    function foo = -> Arrays.asList(1, 2, 3)

or,

    import java
    function foo = -> util.Arrays.asList(1, 2, 3)

Previously, one would have had to use either of the following constructs:

    import java.util.Arrays
    function foo = -> Arrays.asList(1, 2, 3)

or,

    import java.util.Arrays
    function foo = -> asList(1, 2, 3)
Include java.lang in the default imports
Merge pull request #122 from jponge/wip/lax-imports

Allow lax imports