Write a function to implement k-fold cross-validation.
Implement k_fold_split(X, y, k, shuffle=False, seed=None). Return a list of [train_indices, test_indices] pairs, keeping X and y aligned. When shuffle is true, use the supplied seed for deterministic shuffling; distribute samples as evenly as possible and assume valid inputs with 2 <= k <= len(X).
def k_fold_split(X, y, k, shuffle=False, seed=None):