Allow extra delimiters in alternative CSV formats

The alternative CSV format now supports semicolons as separators, as
used by events 6663 and 6664.  The SI reader also had to be adapted to
reject these files as not of its format, which it didn't previously do.
Allow multiple names in triple-column format

Event 6637 has rows with multiple comma-separated competitor names, with
all the rest of the data columns being comma-separated.  These multiple
names push the other columns 'out' of alignment, so we need to detect
this and cater for it.
Allow SI reader to handle blank last-control time

The cumulative time at the last control was blank for the first
competitor in event 6720.  This tripped up the format autodetection.
Improve error handling in alternative CSV reader
Allow alphanumeric but non-numeric control codes

The SI CSV reader and alternative CSV readers needed to be adjusted
here; they rely on some kind of restriction on the format of control
codes, which has now been relaxed slightly.  The SI HTML reader already
supported them but a test was added anyway.
Ignore broken cumulative times for extra controls

Event 6752 has a cumulative time '0.00' for an extra control, which is
invalid.  The parsers now remove the extra controls before attempting to
check that the cumulative and split times have the same length.
Handle old SI HTML format without start numbers

Event 6778 has no start numbers.  The old-format SI HTML parser has been
updated to check for the absence of start numbers and adjust the parsing
if so.
Support variation HTML format

This has been christened the 'OEvent tabular format', and is used by
event 6748.  It's another dialect of the SI HTML format; support for the
format is provided by a new third recognizer.
Relax time count on old-format SI HTML files

There is no longer a check that the number of cumulative and split times
are the same in the old (preformatted) SI HTML reader, as splits can be
omitted without trace and the parser could not know.  This can happen in
particular if there are negative splits.

This issue is known to hit three events (6558, 6844, 6865).
Support OEvent data with class names

Used by event 7095.
Add further SI HTML format reader tests

The tests here assert that the code correctly handles the case where a
competitor's splits run over to two lines and classes are being used.
Extract common normaliseLineEndings function

Also introduce the 'full' line-ending normalisation to those readers
that didn't already have it.
Trim trailing commas in CSV reader

Allows events 6591 and 7049 to be read
Allow zero splits in CSV files

It doesn't make sense for a split to be zero, but there's not a lot we
can do.  Just accept it being zero and make do.

We also NaN out all time losses when a fastest split time is zero.
Update generated JS files, changes and version

Fixes #10.