Shutdown listenerExecutor to prevent the Thread from leaking

listenerExecutor needs to get shutdown once it is no longer required.

SMACK-567
Re-use executorService as listenerExecutor
Make XMPPConnection.schedule() protected

This method was never intended to be part of the public API. It's also
critical that the given Runnables complete within a reasonable
time frame so that they don't block following ones.
Don't throw an IOException if IBBStream got closed by the remote

Smack should not throw an IOException in case a stream got closed by
the remote peer and the user is trying to read() from the stream. This
commit fixes that, by making Smack return '-1' if the stream got
closed by the remote. An IOException will only be thrown if the user
tries to read from a stream that got already closed by *himself*.

SMACK-468