Applying memory clock offset breaks memory clock locking

Applying a memory clock offset breaks the lock set by nvmlDeviceSetMemoryLockedClocks as it doesn’t take into consideration clock offsets. The nvmlDeviceSetGpuLockedClocks function also likely suffers from the same issue.

Both functions should probably be deprecated in favor of a performance-state-focused API. Since that’s both the intention and how it’s supposed to work.