Integrating thermodynamic and enzymatic constraints into genome-scale metabolic models.