YoutubeIE: reuse instances of InfoExtractors (closes #998)

When a IE is added to the list, it's also added to a dictionary. When a IE is requested it first looks in the dictionary and if there's no instance it will create a new one.

That way _real_initialize is only called once for each IE, saving time if it needs to login for example.
fix bug: kankan extractor not support http://vod.kankan.com/v/70/70309.shtml
add an extractor for tv.sohu.com
use ..utils/clean_html()
Add some verbosity when reporting finished downloads

For example:

    [download] Resuming download at byte 1868140
    [download] Destination: Entry #1-Bn59FJ4HrmU.flv
    [download] 100% of 3.27MiB in 4s

This format is meant to somewhat mirror the behavior of wget(1) when reporting finished downloads:

    100%[==================>] 54,836,682   788KB/s   in 74s

    2013-08-04 12:32:05 (728 KB/s) - 'google-chrome-stable_current_x86_64.rpm' saved [54836682/54836682]
fix parse title bug
improve sohu extractor
add an aes implementation
 YoupornIE: Add support for hd videos and update Test
HTTPError is in urllib.error in Python 3, not in http.error
[cnn] remove debug print call.
[youtube] update algo for length 88, thanks to @Ramhack (fixes #1328)
[addanime] add file
Merge pull request #1181 from h3xx/master

Add some verbosity when reporting finished downloads

Remove the mixed use of tabs and spaces for indentation.
Show the time taken to download in the same format as the ETA
Tolerate junk at the end of gzip-compressed content (#1268)
Merge branch 'master' of github.com:rg3/youtube-dl
[generic] Fix URL concatenation

When the url is something like http://example.org/foo/bar?x=y  and the added is file/video.mp4 , we want http://example.org/foo/file/video.mp4
Fixes #1268.
Print playpath with --get-url (Fixes #1334)
[generic] simply use urljoin