From directed evolution to computational enzyme engineering—A review