CO2: Efficient Distributed Training with Full Communication-Computation Overlap