[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()
[minor]tutorial/models.py: factorize path handling

there was a bug in Extract.get_prod_path()
probably a bug, please check

The functions tutorials/models.py:Chapter.get_{introduction,conclusion}_online
used .get_path() instead of .get_prod_path() as expected.
[minor] tutorial/views.py: grammar fix