Merge pull request #2536 from RosettaCommons/roccomoretti/vector_normalize_issue
Metal constraint fixes & better diagnostics.
* In a recent master, there's an issue with the Enzdes/metal constraint code when the constraints add additional virtual tracking atoms. Fix this such that when we replace_residue_keeping_all_atom_positions() we don't crash if the new residue has more virtual atoms than the starting residue.
* Normalizing a zero-length vector isn't necessarily bad user input, so we shouldn't throw an exception which will result in all nstruct for this input to be canceled. Also provide better diagnostic info in certain conditions.