Applications of isothermal titration calorimetry in protein folding and molecular recognition