text: Title: [Bug]: Calling start() multiple times on a macos timer doesn't stop the previous timer
  Body: ### Bug summary
  
  When calling `timer.start(); timer.start()` on an already running timer, the previous timer should be stopped before starting a new one. On the macosx backend this causes two timers to be running under the hood.
  
  ### Code for reproduction
  
  ```Python
  import time
  import matplotlib.pyplot as plt
  
  timer = plt.figure().canvas.new_timer(interval=1000)
  
  timer.add_callback(lambda: print(f"{time.ctime()}"))
  timer.start()
  timer.start()
  
  plt.pause(2)
  ```
  
  
  ### Actual outcome
  
  4 prints, 2 per second
  ```
  Tue Nov  5 09:07:27 2024
  Tue Nov  5 09:07:27 2024
  Tue Nov  5 09:07:28 2024
  Tue Nov  5 09:07:28 2024
  ```
  
  ### Expected outcome
  
  2 prints, 1 per second
  ```
  Tue Nov  5 09:07:27 2024
  Tue Nov  5 09:07:28 2024
  ```
  
  ### Additional information
  
  _No response_
  
  ### Operating system
  
  macos
  
  ### Matplotlib Version
  
  main
  
  ### Matplotlib Backend
  
  macosx
  
  ### Python version
  
  _No response_
  
  ### Jupyter version
  
  _No response_
  
  ### Installation
  
  None