change to rwlock, increased chan buffer - that also needs a revisit

jc, I switched this to a rwlock so publishchange could hold a rlock, as I have a goroutine that would lock on the full mutex when it shouldn't really. IMO as we should only be write locking subscribers when its changing, a rlock is sufficient to allow multiple readers. This is also related to another problem I'll cover under separate push.