Refactor SetCpStatus, hopefully fixing breakpoints. Now it's only called in a single place in each mode. Normally this is the GPU thread, because everything needs to be checked when CPReadPointer changes, and watermarks shouldn't need strict timing so there's no need to also call it from some other thread. In bSyncGPUAtIdleOnly mode, we ignore watermarks, so it's called on the CPU thread after cpuFifo.CPReadPointer is updated, to check for breakpoints.