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!()
```
Because booleans are ints actually, and it doesn't work for bootstraps
if you pass bool parameters. Annoying, because in the specs any
primitive should do...