Properly clean up player when calling MediaElementPlayer.remove()

Some features manipulate elements outside the player container
(including but not limited to attaching events to `document` and
`window`), which are not properly reversed when calling
`MediaElementPlayer.remove()`.

This commit does the following changes to enable easy cleanup:
- features can now specify cleanup routines, named 'clean' + feature
name;
- `mejs.players` is now a hash keyed by the players' IDs;
- new `MediaElementPlayer` methods: `globalBind()` and
`globalUnbind()`, which are simple wrappers to event (un)binding to
`document` and/or `window` that use the player ID as a namespace.
Add option to hide the video controls on load
Add a few basic Jasmine tests

 * SpecRunner-Player runs some basic tests on the player
 * SpecRunner-CreateRemove tests for Issue #670

Note: the tests run directly on the individual .js files rather than
on the catenated or minified files.  That could be easily changed,
but it's nice to be able to run a test, make a fix, and just reload
the browser.
Don't spill vars to the global scope
Play nice with code outside MEP
Make possible to open youtube links as audio only

This add to youtube plugin the ability to open youtube links as audio only (without image, only the control panel)
Fix cleanup on the shim as well
_Any_ non-native media elements should be removed
When a player is removed the internal array is updated.

Bug fixed: When the player's "remove" function is called it doesn't
remove the internal reference to the removed player. When the
pauseOtherPlayers option is true, the player being used is flash and the
flash dom element has been removed an error is thrown when the next
video is played.
Adding mejs-shim class to shims to prevent improper resizing
Fixing indentation
Merge branch 'master' into shim_class
Merge pull request #779 from odnamrataizem/master

Properly clean up player when calling MediaElementPlayer.remove()
Merge pull request #788 from Jmaharman/master

Bug fix for the error "this.pluginApi.pauseMedia is not a function" when using the flash player and removing the dom element.
Merge pull request #784 from Seb33300/patch-1

Make possible to open youtube links as audio only
Merge pull request #789 from realgravity/shim_class

Add "mejs-shim" class to all shims to prevent improper resizing
Merge pull request #781 from msgilligan/msgilligan-jasmine-tests

Add a few basic Jasmine tests
Merge pull request #780 from gymglish/master

Add option to hide the video controls on load
* Add option 'toggleOnCaptionsButton' to just toggle the captions button if we only have one track
* Also add a css class to know the captions button status
fixed error when srclang was missing