Captions

This is the new all encompassing captions PR.
It's still have some issues, like `cuechange` firing unconditionally and some issues with the captions displaying but there won't be much architectural changes to this.

I'd like at some point to take all the TextTrack stuff out of videojs and include it as a dependency similar to vttjs.

Things left to do:
* [ ] A whole bunch more tests.
* [ ] `cuechange` needs to be updated to only fire once per change. It currently fires a couple of times per change.
* [ ] When adding a cue to a track programmatically, it needs to remove that cue from other text tracks if it existed in any other track.
* [ ] The menus don't work great on mobile devices. Particularly, with respect to hiding the menu after usage.
`tech.featuresTextTracks` indicated whether native support is available and it is actually working for our use-case. This means that it isn't always true for html5. Specifically, we currently exclude firefox due to issues, but mainly IE10 and older samsung android devices, while they do support native captions it doesn't really work very well.

Also, the track settings isn't currently set up to work with native captions like in chrome but also on a device like iOS where the settings are OS-level, we don't want to show the button as well.