Free energy calculations in molecular modeling: from classical methods to machine learning