Feature/refactor

Added docs and renamed variables for clarity. Modules now make use of RenderResult. Changes to the player allow for multiple renderers and export options. The config file now requires a list of Renderers and a list of exporters rather than just a list of handlers.
On further review, It is possible for `mfr.render` to raise a `ValueError` if there is no handler available for the file. This should never happen if you use `mfr.detect` to get a valid handler.

```python
handler = mfr.detect(fp, many=False)
if not handlers:
    # no handlers available for fp. Show appropriate message to the user
    return render_template('no_handler_available.html'), 404
else:
    render_result = handler.render(fp)
    return render_template('render.html', render_result=render_result)
```