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.
Save subtitles using the same code for all the options
Use a dictionary for storing the subtitles

The errors while getting the subtitles are reported as warnings, if no subtitles are found return and empty dict.
YoutubeIE: use the same function for getting the subtitles for the "--write-sub" and "--all-sub" options
YoutubeIE: don't crash when trying to get automatic captions if the videos has standard subtitles.
Don't try to write the subtitles if it's None
Merge remote-tracking branch 'upstream/master'
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
changes
improve sohu extractor
New sig len 89 algo

Fixes new YT encrypted sig len 89.
Merge pull request #1218 from patrickslin/patch-2

New sig len 89 algo
release 2013.08.09
add an aes implementation
 YoupornIE: Add support for hd videos and update Test
Note update possibility on errors (thanks @chbrown, #1229)