On the Role of Regularization in Machine Learning: Classical Theory, Computational Aspects and Modern Regimes