Resubmit: Adding support for Widevine (merged changes by @colde)

* Adding Widevine support.
* Extending PlayReady support with optional CustomData.
* Adding option to override protectionData (including laUrl, cdmData &
license request headers) when instantiating the player.
* Moved parsing of CDM message into respective DRM license acquirers.
This is just a way I commonly do it because I think  makes it clearer. The idea with the second argument is that since it would not be provided it should be populated with whatever the current browsers' representation of undefined would be but yeah, undefined for newer browsers or void (0) would also do the trick. `str === 'undefined'` is just plain wrong, that was supposed to be `typeof (str) === 'undefined'`.
Why I had this separated is because I have a few more util functions (used in other additions) that I haven't put up now because I didn't want to increase the size of this PR, I will hopefully submit that as a follow up later. And why I called it Extensions was just because it seemed like that's the way you guys did it but I can just as well rename it to Methods and put it in the utils as you suggested.
I'll put up an amended version with your suggested changes here and with the empty setup function removed shortly.