Hyperparameter Optimization: Foundations, Algorithms, Best Practices and Open Challenges