Refactor qm.reaction.QMReaction

The reactant and product handling (merging and altering
sorting labels) is now it's own method. Additionally the
IRC calculation and geometry optimization have been placed
into their own method. This has only been done for the
generateTSDirectGuess method, but should be used for the
QST2 and NEB methods since they also need to do these steps.

Other methods have been moved around, but have not been altered.