phases: do not reanalyze amodules in run_phase

Multiple `run_phase` invocation should not analyze a amodule twice.

This is a workaround, the whole phase API should be improved to make late
module loading less error-prone and more simple.

Close #726 
Je sais pas si le `private` est vraiment nécessaire. Ça peut être une information utile pour le client qui doit implémenter un moteur complexe ou exotique.

En fait on peut avoir le meilleur des deux mondes:

    var phased_modules: Set[AModule] = new HashSet[AModule]

Comme ça on peut le lire mais pas l'écrire à moins de caster.