Task 11834 - support for gaps between primers on single strand + short p.rimers are merged into previous ones until minOligSize is reached

1. Ввел доппараметр `minOligSize`.
2. `singleStrandOligoStream()` после `sliding` рекурсивно конкатенирует последние олиги до тех пор пока их размер не станет больше чем `minOligSize`
3. Там же: если последний олиг оказывается на основном стренде, то он удаляется с основного, и мержится с последним олигом на комплементарном стренде.
4. Доработал `getForwardOligs()`. Изначально метод работал только с полностью перекрывающимимся олигами (где `2 * overlapSize == oligSize`). Теперь же для работы алгоритма возвращаю олиг + gap на реверсном стренде (в комментариях к методу есть картинка-пояснение), чтобы в `mutate()` все работало без изменений.
5. Дописал тестов в `OligPickerTest` - постарался покрыть все случаи с подробным описанием