Counterfactual Explanations for Machine Learning: A Review