Robust Machine Learning: Detection, Evaluation and Adaptation Under Distribution Shift