Chain implememtations

Change in engine so the selected implementation is more abstract and has some kind of fall-back.

1. if intern or extern, try to get the specific implementation
2. else try to compile the body
3. else compile an error

The point is top prepare a future PR where intern and extern methods could provide an alternative (slow or degraded) implementation.
j'y avais pensé mais ça deemandait de changer les 3000 returns compliqués à l'intérieur de la méthode.