Améliore le comportement des archives de tuto/article

| Q                         | R
| ------------------------- | -------------------------------------------
| Correction de bugs ?      | oui
| Nouvelle Fonctionnalité ? | ~oui
| Tickets concernés         | #1458, #1460 

Cette PR vise à régler deux choses fortement liées : les archives des tutoriels ou articles sont en TAR qui n'est pas un forma facilement lisible, et elles ne sont pas versionnées, ce qui signifie que n'importe qui peut télécharger une archive correspondant à la dernière version *draft*. 

Je règle cela en mettant le format des archives en ZIP et en les versionnant, tout du moins pour la version publique.

# Notes de QA

Il faut donc cette fois tester que l'archive contient ce qu'elle doit contenir, donc ...

+ Créer un article, le publier, puis le modifier sans publier les changements. Télécharger l'archive de la version publique, vérifier que ça correspontd. Télécharger l'archive de la version *draft* et vérifier que les changement sont bien présent dans cette archive mais pas dans celle de la version publique !!
+ Faire de même pour les tutoriels. Pas besoin de sortir la grosse artillerie, un mini-tuto suffira

**Attention** que cette PR doit aussi être testée sous windows, les archives étant normalement directement lisible par cet OS sans besoin d'installer de programme externe.
la condition `article.sha_public is not None` ne justifie pas de la mise en ligne d'un article. Il y'a des cas ou on a le `sha = ""` qui peut biaiser ta condition. Il faut donc rajouter (si ce n'est pas encore fait) une méthode dans le model qui fait la même chose que le `on_line` des tutoriels