Applying Machine Learning Techniques for Caching in Edge Networks: A Comprehensive Survey