Generalizing DP-SGD with Shuffling and Batch Clipping