Separate TTML and WebVTT Cue Data

I feel like it's extremely awkward and cumbersome to have the Cue object be the union of capabilities of these two formats (and, currently, it isn't. But nevermind that).

The interface could be the union of both formats, but I feel it would likely make much more sense to make the Cue's Data structure a virtual class (PIMPL style, as in Qt). In this way, the Empty cue could be much smaller, and would also simplify code somewhat.

However, I feel that the interface should still be the union of the two formats, and provide accessors for the formats from each of them, so that client applications don't need to do any bizarro QueryInterface-style nonsense with them.