Sharable Receiver base class for Subscriber (#29)

This is still unsolved and I'm pretty sure the code is buggy. Consider the following:

You have 3 subscribers sharing, A, B, C. Let's assume A and B don't have any socket yet, and C has one socket with data available for reading.
After line 103 sockets contains the socket from C and intervals contains [0, 0, 1]. In the first iteration, the loop at line 131 will move to the next interval and receiver (B), because interval == 0. When line 134 is reached, the socket is detected to have data, but process will be called on the wrong receiver, B instead of C.

Another example in which this code fails is when you have 3 subscribers, one with 0 sockets, one with 2 and one with 1. In this case sockets has 3 elements [B, B, C] and intervals has [0, 2, 1]. After the first iteration, i points to B, socket to B's first socket and interval equals to 2, but it should be 1 already! because the first iteration has already processed the first socket from B. After the second iteration interval equals to 1 and i still points to B. At the beginning of the third iteration socket points to C's only socket, interval-- == 0 is false and then if the socket has data, process will be called on B, not C.

I think you have to replace <code>if( interval-- == 0)</code> by <code>while( interval-- == 0)</code>, that fixes both problems described above.