Dynafold: a Dynamic Programming Approach to protein Backbone Structure determination from Minimal Sets of residual Dipolar couplings