split iterable into n chuncks of as equal size and fille the last chunk with the remaining elements
Iterable<Iterable<T>> nchunks(int n) => chunks((length / n).ceil());