Universal Checkpointing: Efficient and Flexible Checkpointing for Large Scale Distributed Training