Oops, forgot to remove previously moved class.
Fixed accidentally returning functional object instead of result that function.
Simplifying determining service's state logic.

 * also dropped no longer required class field - decoder. It is now part of stream.
A bit more defencive programming.
Low-level method 'send_data' has now private access attribute (virtually, of course).

Because it is private by design.
Naming.
Now service will print reason, after disconnecting.
Another minor renaming.
Python 2.6 does not have deque.maxlen property, unfortunately.
Important #todo added.