use separate channel for changing stopping state

Previously both setting and getting would use the same channel, when really
setting depended on a particular goroutine receiving it (the loop maintaining
the stopping state). This could mean that when setting it another goroutine
trying to get it at the same time would receive it instead, and thus the value
wouldn't change for everyone else getting it.