Given a data shape and a chunk shape (or maximum chunk size), iteratively return slice objects that can be used to slice the array.