Don't recode the video with m3u8 downloads (fixes #1741)
[kankan] Fix the video url

It now requires two additional parameters, one is a timestamp we get from the getCdnresource_flv page and the other is a key we have to build.
Now a new FileDownloader is created when downloading a video

The progress hooks can be added using the method "add_downloader_progress_hook"
Move FileDownloader to its own module and create a new class for each download process

A suitable downloader can be found using the 'get_suitable_downloader' function.

Each subclass implements 'real_download', for downloading an info dict you call the 'download' method, which first checks if the video has already been downloaded