Added provider based architecture for media-files. See issue #113

This enables the possibility to for example store media files in the
database or on an external service provider.