VID-1810 Redo the janky image handling that existed before

The `File` object typically doesn't have methods like this because it and its subclasses don't distinguish themselves on file type (image, audio, video, etc) but rather on accessibility (LocalFile, ForeignFile).  The responsibility for transformations based on file type rests in the MediaTransformOutput class (has image and video subclasses).  I was hesitant to add it to MTO because its not used very much outside of core MW code like Linker.php etc.  This is code that doesn't have a very obvious place currently but probably should.  Code that knows how to construct general thumbnail URLs could go here too.