While the lack of the filename in curl POST does not
directly affect Moodle, some external API's expect to get
the filename of the original file, which affects plugins
using the CURL class.
Improve mimetype detection for remote files that
have no file extension. The mimetype detection
that makes use of the file, only works with local
files, so do not use the remote path which can be
a URL or stream.
This change moves all operations which deal with the fetching/updating, or
setting of files from the file_storage class into a new file_system class.
A new file_system can be specified in the config.php and used to replace
all relevant methods in order to move the file system component to an
alternative solution.