Follow spec when collecting timings and settings

This is a pretty big change, sorry :(

I am now citing specific aspects of the spec when processing the cue timings/settings line of the cue, in a fashion similar to WebKits. I don't necessarily agree with every aspect of the algorithm, but if it changes, this should be simpler to adjust.

This does change the way a number of error messages are handled, because it does not support timestamps with whitespace between the delimiter at all now, as the parsing algorithm does. This might hurt the diagnostic/lint use case somewhat, but I think it's still fairly readable.

I've added some new API for setting cuesettings from a string, and am testing them a bit -- but some of this might be missing, so...