Cache the Fraction[] arrays in sweeps processing

This is a first step towards user-editable sweepstakes.
Properly use a map for cached specialSweeps

That would have been an embarrassing logic error.
Sweepstakes: Add linkSweepstakes for 2-D sweeps arrays

This is a next step towards arbitrarily editable sweepstakes. It, of
course, needs aggressive unit testing.
Add test for second signature of linkSweepstakes

I have noticed that none of my test String arrays actually skip places
for ties, as the method docs recommend. The methods were designed to
work without tie-skipping, but I'll reorganize my tests to ensure that
they still function in a typical use case (which will skip places for
ties in the results array).
SweepstakesTest.testLinkSw...*: make test arrays skip places for ties
Add ArrayUtils.expandToLengths

This will be used for converting assignPoints into values for storage by
EventResults.

I'm aiming to convert EventResults.indivSweeps, etc. into 2-D arrays
that can hold different sweeps values for each competitor. 1-D Fraction
arrays from Sweepstakes.assignPoints will be run through this method to
produce arrays that represent assigning the same amount of points to all
competitors in a given tie. The user can modify this behavior if need be
by editing the array (GUI for this to be implemented).