Add gibbs energy

This is a cherry-pick/rewrite of the changes in add_thermodynamic_potentials to only contain:
- gibbs free energy computation of endmembers
- the new SolidSolution class