add Evaluator.best_hand and refactor