Heuristics, Optimizations, and Parallelism for Protein Structure Prediction in CLP(FD)