Error Correcting Output Codes Improve Probability Estimation and Adversarial Robustness of Deep Neural Networks