message: fix: sort private mutations in smp clusters rule
  The private mutation positions were also expected to be sorted, so we add sorting here.
diff: #include <optional>
  #include <vector>
  +#include "../utils/contract.h"
  #include "../utils/safe_cast.h"
  #include "getQcRuleStatus.h"
  +
  namespace Nextclade {
  std::vector<std::vector<int>> findSnpClusters( //
  - const std::vector<NucleotideSubstitution>& privateMutations,//
  + const std::vector<NucleotideSubstitution>& privateMutationsRaw,//
  const QCRulesConfigSnpClusters& config //
  ) {
  + auto privateMutations = privateMutationsRaw;
  + std::sort(privateMutations.begin(), privateMutations.end());
  +
  const auto clusterCutOff = safe_cast<size_t>(config.clusterCutOff);
  std::deque<int> currentCluster;
  std::vector<std::vector<int>> allClusters;
  