Separate backend specific code in `:gpu_timer`
Separate backend specific code in `:gpu_timer`

1. Moves the `GpuSemaphore` type out of `GpuTimer` into its own file and target
2. Moves backend specific code from `:gpu_timer` into its own files.
3. Splits `:gpu_timer_kernel` into the backend specific targets `:gpu_timer_kernel_{cuda|rocm}`.
4. Removes the `:gpu_timer_header` target
