Clean up subscription to arrayChange when there are no subscribers

Re. #1503 

Note that this should also speed up changes to observables since `cacheDiffForKnownOperation` will not be executed when there are no subscribers (is this an concern?)