Merge pull request #1230 from RosettaCommons/aleaverfay/libxml2_to_master
Adding a new external library to Rosetta: libxml2. This allows for the automatic validation of an XML file against an XML Schema, so that we can detect badly formatted input files.
Improving the API for the definition of XML Schemas. It is now substantially easier to define schemas for elements that themselves contain subelements.
Defining XML Schemas for TaskOperations, ResFilters, and ResLvlTaskOperations in addition to ResidueSelectors. In addition, the factories for each of these four kinds of classes now have unit tests to ensure that each class that is registered with the factories needs to define a valid XML schema. (Note: for a schema to be valid is not the same thing as for the schema to be correct. A valid schema is merely recognizable to something that parses xml schema; a correct schema accurately describes the language read by those classes trying to parse the input XML files).
Thanks, Andy @everyday847 for all your help in writing these schemas.