Widening, narrowing, function stack specialisation

We now implement widening and (optionnal) narrowing.

The whole idea of widening is to go the minimal possible times through a loop. We had to check for them dynamically (because of the higher order functions).