[minor] remove code duplication in tutorial/views.py
[minor] factorize tuto download in tutorial/views.py
[minor] factorize fetching extracts in tutorial/views.py

Note: there was a bug in view_chapter_online which used
  ext["path"] = tutorial.get_path()
instead of
  ext["path"] = tutorial.get_prod_path()

Why do we sometimes use fetch_txt=False? Couldn't we always fetch it for regularity?
[minor] factorize read()/close() patterns

there was a missing close in export_tutorial_to_md()
there was dead code in Tutorial.get_conclusion_online
[minor] tutorial/views.py: factorize prod_path handling
[minor] tutorial/models.py: factorize path handling

there was a bug in Extract.get_prod_path()
probably a bug in tutorials/models.py:Chapter.get_{introduction,conclusion}_online; please check

Those _online functions used .get_path() instead of .get_prod_path() as expected