On Generating Plausible Counterfactual and Semi-Factual Explanations for Deep Learning