Dynafold: A Dynamic Programming Approach To Protein Structure Calculation From Residual Dipolar Couplings