## Домашнее задание №6 «Пайплайн»
Необходимо реализовать функцию для запуска конкуррентного пайплайна, состоящего из стейджей.

Стейдж - функция, принимающая канал на чтение и отдающая канал на чтение, внутри в горутине берущая данные из входного канала, выполняющая полезную работу и отдающая результат в выходной канал:
```golang
func Stage(in <-chan interface{}) (out <-chan interface{}) {
    out = make(chan interface{})
    go func() { /* Some work */ }()
    return out
}
```

Особенность пайплайна в том, что обработка последующего элемента входных данных должна
происходить **без ожидания завершения всего пайплайна** для текущего элемента.

Т.е. пайплан из 4 функций по 100 мс каждая для 5 входных элементов **должен выполняться
гораздо быстрее**, чем за 2 секунды (4 * 100 мс * 5).

Также **должна быть реализована возможность остановить пайплайн** через
дополнительный сигнальный канал (`done`/`terminate`/etc.).

При необходимости можно выделять дополнительные функции.

**Нельзя менять сигнатуры исходных функций.**

Для большего понимания см. тесты.

### Критерии оценки
- CI-пайплайн зелёный - 5 баллов
- Добавлены новые юнит-тесты - до 2 баллов
- Понятность и чистота кода - до 3 баллов

#### Зачёт от 7 баллов

### Подсказки
- https://github.com/golang/go/wiki/CommonMistakes#using-goroutines-on-loop-iterator-variables
- `go test -v -race -count=100 .`
