A Survey of Algorithms for Black-Box Safety Validation of Cyber-Physical Systems