filesystem: add COverrideFile/COverrideDirectory to reduce code duplication

This work is based on 9951b3d4bee38066f3111f14ed46d16f7fa24fd3 from @notspiff and adds a COverrideFile and COverrideDirectory implementation which are meant to be used by VFS classes that simply translate a path to another one that is already handled by our VFS. This is currently the case in CBlurayFile, CMultiPathFile, CSpecialProtocolFile and CSpecialProtocolDirectory and will also be the case for CResourceFile and CResourceDirectory from #5561.