Banged call of a function

A function call marked with bang `!` will be called only once,
the result is stored as a constant and will be directly returned
for every subsequent call.

Banged call syntax :

```golo

let x = foo!(a)

```

`x` is computed with `a` value the first time which `foo` is called,
then `x` is constant regardless the value of `a` for every subsequent call.

Every function call can be banged including anonymous, on closure references, and constructor calls :

```golo
let f = |x| -> |y| -> |z| -> x + y + z
let a = f!(1)!(2)!(3)
let b = java.lang.Object!()
```
`boolean` type is not allowed here : *Each argument must be an Integer, Float, Long, Double, String, Type or Handle value*

ref : http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/MethodVisitor.html#visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...)