Wasserstein Distributionally Robust Optimization: Theory and Applications in Machine Learning