Blocking queue get

I'm continuing (#244) to optimize main loops to reduce CPU usage in idle mode.

When we are using non-blocking Queue.get with timeout, underlying Condition doesn't lock for all timeout. It starts to lock and release frequently.

I've replaced non-blocking Queue.get to blocking one. Previously we've used timeout to break thread loop cycle on stopping event. Now I'm breaking loop by putting `None` into queues. Queue.get unblocks and thread react on stop flag.

After this we have only Scheduler loop with non-blocking get. But it have to be non-blocking with timeout for running tasks. Possible next step — not to split timeout to `wait_timeout` portions should decrease cpu usage too, but not so notably. I've left it as is right now.

I've benchmarked both of this improvements (#244 and current). I've started 3 `echo_client`s with original version (baf9aaf26c80c87e770cdf35b1fa4fe231663246), after #244 and after both of them.

9 hours of running with no incoming messages gave me this `ps aux`:
```
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      1428  1.4  0.4 285720 14548 pts/0    Sl   01:10   6:56 python ./echo_client.py
user      1458  0.5  0.4 285736 14564 pts/0    Sl   01:10   2:45 python ./echo_client.py
user      1489  0.2  0.4 285736 14560 pts/0    Sl   01:10   0:59 python ./echo_client.py
```