Task 11834 - Zuker algo for olig design in yprimers bugfix/speedup

1. Ускорил генерацию кандидатов через Future.traverse в SinglePicker.scala:59
2. в mutate() (SingleMutagen.scala: 70) рассматриваю не всех кандидатов, а рандомную выборку и N штук (N = число процессоров) и параллельно для каждого запускаю расчет Score.
3. Там же добавил параллельный сет в качестве кэша: если олиг уже встречался ранее - то пропускаем его, ибо либо он уже лучший, либо его отбросили в предыдущей мутации/итерации
4. В мутациях и итерациях добавил паттернматчинга на функцию скоринга - если это Zuker, то про score == 0 мы выходим. Причина: это максимальное значение, означающее, что вторичных структур нет. Это значение уже не улучшить.