Add filtering to competitor listbox

The competitor listbox now also contains the All, None and Crossing
Runners buttons.
Rename CompetitorListBox to CompetitorList

The CompetitorList now contains the All, None and Crossing Runners
buttons, so it's more than just a box.
Rename competitor-listbox files

Done separately from previous commit for continuity.
Support drag-selection of multiple competitors

This is selection only, no de-selection.  Also, there is a known issue
with IE9/IE10 which should be addressed in a future commit.
Update handling of filter textbox

The updates are mainly for the benefit of IE9 with its broken support of
the input event on textboxes.
Support drag-selection in competitor list
Update concatenated and minified files

Updated prior to publishing branch.
Add support for shift-drag to deselect
Update concatenated and minified files
Merge branch master
Update filtering upon change of competitors
Internationalise 'Filter' text

Still only placeholder values for non-English languages, though.
Resize chart on filter text change

This also involved a bit of restructuring of the viewer.  Also applying
overflow:hidden to the body element removes some of the faffing around
to avoid scrollbars.
Add filter text to query string
Detect non-starters and mark them as such

Additionally, non-finishing and disqualified competitors are also
detected in the IOF XML formats.  Disqualified competitors are also
sorted to the bottom of the list, and shown without position numbers in
the results table.
Consider 'dsq's as not completing the course

This change allows us to back out a couple of changes in the previous
commit.
Exclude non-starters from graphs

There's not a lot of point showing a non-starter on the graph as they
have no data to plot.

Additionally, if an entire class is full of non-starters, we need to
show a placeholder message to indicate that the class has no competitors
starting.
Fix bug in results-table tests

These tests tended to fail if other tests failed also.  The fix is to
restrict the scope of various jQuery selections to the results table, as
otherwise they can find stacktraces from failing tests instead.
Update Brazilian-Portuguese translation
Restore scrollbars on results table

Setting overflow: hidden on the body element all the time means that the
results table doesn't scroll when it should do.  Instead, overflow:
hidden is removed when the results table is viewed and restored when one
of the charts is shown.