Operator Scaling: Theory and Applications