Refactoring gestion d'erreur (InvalidDeckAction herite de InvalidAction et PlayerRuntimeImpl.tryTo concerve l'erreur originale au lieu de transformer en RuntimeException). Ajout tests unitaires dans core + baisse seuil tolerance couverture en attendant refonte de GameRuntimeImpl.