Output templates resulting in filenames with only dots preceding the
extension would be passed to ffmpeg for embeding metadata with .temp
in the extension field because os.path.splitext would not find and
extension field in those filenames.
As a result ffmpeg would fail to determine what the output extension
should be and fail.
To solve this a must_have_ext argument was added to _change_extension
so that where a extension is required the expected extension will be
used in those cases where os.path.splitext returns an empty string for
the extension field.
existing_video_file in YoutubeDL.py was also changed so it won't
overwrite info_dict['ext'] with an empty string if os.path.splitext
returns an empty string for the extension field. This fixes#9970 .