Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback