Merge pull request #100 from RosettaCommons/kwikwag/peptiderive-talaris
A refactor of PeptideDeriver, aka Peptiderive.
It was a pilot app. Now it's a protocol + app.
**Main classes and features:**
- `PeptideDeriverFilter` (`protocols/analysis`, `protocols.3`) - the essence of the protocol. Given a pose, calculates the peptidic stretch contributing more than others to the interaction energy. It also reports on and optionally models cyclizable peptides (thanks to @orlypolo ). Data is written down to the log or to a file, in one of two formats.
- `DisulfideInserterMover` (`protocols/simple_moves`, `protocols.3`) - a mover that given a receptor peptide pose mutates the peptides edge residues to cysteines, if needed, and enforces disulfide bonding by constrained minimization of the bond and the interaction. (again, thanks to @orlypolo )
- `FilterReporterMover` (`protocols/moves`, `protocols.1`) - a `FilterMover` that also calls `report()` on `apply()`
- `PeptideDeriverOutputter` (in `PeptideDeriverFilter.hh`) - a abstract base class for handling calculation outputs from `PeptideDeriverFilter`. Since `PeptideDeriverFilter` might have a set of outputs for each residue, for each chain in each chain-pair, outputting is quite elaborate. I figured I should decouple the calculation from the representation of results. Implementors of this class are responsible to implement representation of results. Subclasses are: (a) `PeptideDeriverMarkdownOutputter`, (b) `PeptideDeriverBasicOutputter` - output data from the protocol to a stream, in either a human-readable (markdown) or easily parsable (basic) format. (c) `PeptideDeriverPoseOutputter` - outputs important poses (using JD2 if possible). (d) `PeptideDeriverOutputterContainer` - delegates calls to a list of outputters; allows aggregation to allow multiple outputs from one `PeptideDeriverFilter` instance.