Failing Forward: Improving Generative Error Correction for ASR with Synthetic Data and Retrieval Augmentation