Machine Unlearning: A Comprehensive Survey