Vulnerability Detection in Smart Contracts: A Comprehensive Survey