This failed experiment wanted to create a generic ForEach method.
However you cannot cast. e.g., []int to []interface{} and need to use a chan interface{}
to pass sequential data around. The result is just to slow to provide any value.
ForEach is too slow. This is just a demo. DON'T USE!
ForEach concurrently runs an `Operation` on the given items in a channel and waits for them to finish.
If an error occurs it returns this error after waiting is done.
If Go had generics we could define a generic list type and would not have to rely on a channel.