Add thermodynamic potentials

Not ready to be merged. Opening for comments/suggestions.
I'd put in a brief plug for plural names of lists.  If we iterate over them in the preferred python way it reads better with a plural name:

for e in elements:

rather than

for e in element: