Captions

This includes the beginning of vtt.js work and supersedes/is a continuation of #1656 but includes fancy captions rather than just native captions like the other PR does.