Fractal Uncertainty Principle and Applications