Split FileDownloader in two classes: FileDownloader and YoutubeDL

YoutubeDL is the class that coordinates everything
FileDownloader gets a filename and an info dict and downloads the video.

We can create a basic FileDownloader class and a YoutubeDLFD sublcass. Then we would be able to create subclasses for external downloaders.

TODO:
* Rename property `_downloader` in InfoExtractors.
* Do not have duplicates method in YoutubeDL and FileDownloader.
* Initialize FileDownloader just with the required parameters.