Merge pull request #4980 from RosettaCommons/roccomoretti/cleanup_citation_manager
Simplify interface for using CitationManager.
There was way too much boilerplate involved with adding citation manager functions, pretty much all of which is unneeded.
This PR reduces the interface for most usage down to one: a void provide_citation_info(basic::citation_manager::CitationCollectionList & citations) const member function. The current CitationCollection and the UnpublishedModuleInfo have been unified under a simple CitationCollectionBase class, which now means that both cited and uncited can be added to the same CitationCollectionList, and the CitationManager will deconvolute them when it needs to. The CitationCollectionList is basically a glorified vector1 with convenience functions to add() citation collections to it. It's set up not only to be able to add CitationCollection and UnpublishedModuleInfo (pointer) objects, but has some template magic which means that you can citations.add() sub-objects directly, which will automatically invoke their provide_citation_info() member function, making the implementation of the provide_citation_info() functions much simpler.
There shouldn't be any change to what is actually printed, modulo potential order rearrangement.