Move checkpointing code to a separate module.

Add test.
Reshuffle batches for each epoch.
Get rid of redundant init_cuda; just call cudaconv2.init.

Use lazyinit decorator to do this by default if the user hasn't already.
Correctly handle older checkpoints.
Use function decorator for timing.