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. **Name sugestions needed**
- [x] Do not have duplicates methods in YoutubeDL and FileDownloader.
- [ ] Rewrite the docstrings of both classes.
- [ ] Write a proper method for downloading in FileDownloader, `_do_download` doesn't look good.
- [ ] Messages to screen should have another prefix, maybe `[ydl]` or nothing?