text: Title: [Bug]: `identify_dynamic_embeddings` does not work for `DataPair`
  Body: ### Describe the bug
  
  The training util `identify_dynamic_embeddings` does not look properly at the embeddings for the `first` and `second`. It probably makes more sense to have a member function for each `DataPoint` class, instead of checking `isinstance` within an external function. There could still be an outer function that iterates over data points in a batch, but it should itself call `identify_dynamic_embeddings_point` for each data point it iterates over. I would say that `identify_dynamic_embeddings` should be called `identify_dynamic_embeddings_batch`, but that would change the API. 
  
  ### To Reproduce
  
  ```python
  first = flair.data.DataPoint()
  second = flair.data.DataPoint()
  dynamic_tensor1 = torch.tensor([1., 2., 3.], requires_grad=True)
  dynamic_tensor2 = torch.tensor([1., 2., 3.], requires_grad=True)
  first.set_embedding('dynamic', dynamic_tensor1)
  second.set_embedding('dynamic', dynamic_tensor2)
  dynamic_data_pair = flair.data.DataPair(first, second)
  print(flair.training_utils.identify_dynamic_embeddings([dynamic_data_pair]))
  ```
  
  ### Expected behavior
  
  This should return `['dynamic']`
  
  ### Logs and Stack traces
  
  ```stacktrace
  
  ```
  
  ### Screenshots
  
  _No response_
  
  ### Additional Context
  
  _No response_
  
  ### Environment
  
  #### Versions:
  ##### Flair
  0.15.1
  ##### Pytorch
  2.6.0+cu124
  ##### Transformers
  4.48.2
  #### GPU
  False