This means for places in Moodle that are going to write a file, like a
CSV file, they can set the intended mimetype of the generated file.
Previously you had to use a stored_file object.
This also gets rid of portfolio_fake_add_url function and replaces the
data module implementation with a button. I also refactored
portfolio_add_button::to_html to use moodle_url so it's easy to return
the same parameters to hidden form fields, an escaped url (for a link),
and a non escaped url (to redirect to, which is what the data module
does)