Slice-based Learning: A Programming Model for Residual Learning in Critical Data Slices