RepoCoder: Repository-Level Code Completion Through Iterative Retrieval and Generation