Modern theory of protein folding