Automatic signature extraction

This PR adds functionality extract signatures automatically, both from .js and .swf players. For now, if any error occurs, we're falling back to the static signatures (which can now be generated conveniently with `--youtube-print-sig-code`).

To avoid having to download the player code every time, it is cached both in memory and on the filesystem (in `~/.youtube-dl/cache` by default).