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!()
```
Set decorators optionaly banged

Introduce the `@!` syntax in order to specify that a decorator returned function
is constant.

As you know, a simple decorator is expanded like this :

```golo
function decorator = |func| -> |x| -> func(x)

@decorator
function identity = |x| -> x

function expanded = |x| -> decorator(|x| -> x)(x)
```

A **banged** decorator is now expanded like this :

```golo
function decorator = |func| -> |x| -> func(x)

@!decorator
function identity = |x| -> x

function expanded = |x| -> decorator(|x| -> x)!(x)
```
Add draft documentation for banged function call
Some changes in the doc
Banged function call documentation

Take into account the comments
Minor changes in the documentation.
Spellchecking, Minor changes, set external links as footnote
Merge pull request #205 from Artpej/wip/banged-function-call

Banged call of a function