Deep Learning with Abstention: Algorithms for Robust Training and Predictive Uncertainty