PeerGroup threading refactor

Rewrite and simplify how the PeerGroup manages its service thread, and avoid holding the PeerGroup lock when calculating Bloom filters. New code seems simpler to me and avoids messyness in Lighthouse.