Update mmCIF parsing (#450)
It's been noted that Rosetta's mmCIF parsing doesn't work with a number of structures. (Critically, with the mmCIF files output by AlphaFold3).
One big limitation is that we're using an old CIFPARSE-OBJ library. This was reasonable at the time, as it was the official C++ library from the RCSB. However, the RCSB has since moved to Python-level processing, and CIFPARSE-OBJ has had no maintenance since before we incorporated it. We've also been consistently bumping up against issues with how it functions.
The Gemmi library has been integrated into Foldit, and that seemed to work well. This is an actively maintained, open source(*) header only (at least for CIF parsing) library. The interface is slightly different from CIFPARSE-OBJ, but not terribly difficult to translate.
This PR removes CIFPARSE-OBJ and replaces it with Gemmi. (Version v0.7.1) Additionally, I included some changes to the ciffile readers and writers to make them more compatible.
ChimeraX is still complaining a bit about Rosetta-produced cif files, but I think that's mainly cosmetic.
One possible complication is that Gemmi is nominally C++14 (versus our current C++11). It looks like we're actually okay with the bits we're using (no C++14 issues), but even if we do have to bump the C++ version, given the increasing importance of mmCIF files (e.g. supporting AlphaFold3 output), I think that's a decent reason to do it.
*) Gemmi is under the Mozilla Public License Version 2.0. This has "share alike" provisions, but only at the file level. Provided we keep Gemmi-provided code in the external/ directory, this should be compatible with the Rosetta license. (CoMotion has confirmed that MPL is acceptable.)