Get Color Joy 2 to work

Fixes most issues in the Color Joy 2 game. Performance is still not satisfying and needs further investigation.
One thing I'd hoped this refactoring would achieve is to lazify this. Right now, if we have a timeline with 1000 frames, we parse all of them deeply right in the beginning. Ideally, we should only do that for frames as we encounter them. I bailed on that during the parser refactoring because it turned out to be somewhat hard to integrate, but I think this refactoring is exactly the right place to do it.

It might well be that it'd even make sense not to keep the parsed frames around at all. Instead, parse them as encountered and throw them away right after using them. That way, we don't keep them in memory any longer than needed. However, depending on how expensive parsing is, that might be to costly. At least, we should be in a position where we can switch between the two models simply by storing the parsed frame in an array or not doing so.