Another major code refactor, but the interface is substantially simplified.
Here's some of the major changes:
* [New documentation](https://rnelsonchem.github.io/costcalc2): A couple of inital pages of documentation have been added to describe the input and output tables from the *costcalc* calculations. This is helpful for the web app interface.
* The [Table input documentation](https://rnelsonchem.github.io/costcalc2/tables_basics.html) and [web application](https://costcalc.rnelsonchem.com/) have links to new template Excel files, which were updated with the changes below.
* Includes a discussion of the new "Mass" column (below) and special case inputs, e.g. kg/kg solid loadings and recycling with number of batches
* PMI calculations fixed. The older PMI calculation was taking into account the 1.0 kg of product, which was in error. This has been fixed -- old PMI values will be 1 unit too large.
* Compound ordering in Reaction table:
* The first compound in a reaction must be the limiting reagent/reference (for solvents). However, the equivalents for this compound do not need to be 1.
* The last compound in a reaction must be the final product. This makes it possible to infer the reaction connections, making the confusing "Cost step" column unncessary (below).
* The ordering of the reactions and Step labels can still be arbitrary, though.
* Column name changes. "Cost" (materials sheet) is now "$/kg", and "Sol Recyc" is now "Recycle".
* The old "Cost" column was confusing because it sometimes was referring to price. The "$/kg" is more general and also indicates the units.
* The "Recycle" values are now general purpose, and can be used for any value, not just solvents. Solvents are no longer required to provide a "Recycle".
* A warning will be provided for the time being if the wrong column names are provided, and the names will be changed automatically. However, this behavior may change in the future.
* Column deprecations: "Relative" and "Cost step" are no longer required. (If they are provided, they will be ignored/overwritten, repsecitvely.) The reasons for this are described above. This greatly simplifies the Reactions table, because these two columns were difficult to explain.
* Optional columns:
* OPEX: The "OPEX" column is now optional and is not included in the template files. This was another case that was hard to describe, and rarely used. Making this also simplifies the Reactions table input.
* Mass: The optional "Mass" column can be added if reagent/solvent usages are given in mass units (e.g. batch records).
* The error printing has been updated. This affects Google Colaboratory users the most, as the error messages won't be printed until the end of the error trace. But this makes the exception class behave in a more rational way.