YouTube plugin refactoring

I'm in the process of refactoring the YouTube plugin so VEVO videos processing appropriately. This is the video I've been using as an example (NOTE: it should fail with HTTP code 403):

http://www.youtube.com/watch?v=A_J7kEhY9sM

I've been studying the code on `youtube-dl` (based on Python). The reason for the failure is related to decryption of the signature, as well as some heavy parameter mangling.

This PR is just to get some refactors into the core, so I can continue research here and there, when I get the urge to try and download more videos. All the tests should pass. If you want to add more tests, I'm game. Just give me a mid-to-high level description of what kinds of tests you'd like to see added, and I can make sure they show up here before asking for a merge.