Add support for SSL/TLS

This adds support for tunneling of rsync traffic over SSL/TLS. It is
compliant with stunnel/socat + rsync. yajsync supports server
authentication but the server also performs opportunistic client
authentication.

- Enabled on both client and server with the option --tls.

- SSL/TLS is configured externally. See JSSE documentation for more
  details.

- SSLChannel is implemented as a simple wrapper around existing
  SSLSocket interfaced as ReadableByteChannel and
  WritableByteChannel. This gives a simple, robust and secure
  solution.

- SSLSocket does not respond to interrupts so SSLChannel does not
  either. Fix possible dead lock by closing sockets when interrupting
  threads.

- SSLChannel requires ByteBuffer.array() and ByteBuffer.arrayOffset().
  Use ByteBuffer.allocate() instead of ByteBuffer.allocateDirect() if
  the latter implies having no array/arrayOffset.

TODO:
- Add client side authorisation in Configuration.
Fix possible dead lock when receiving literal data from sender

A dead lock or AssertionError could occur if
Receiver._senderInChannel has a block size less than 1024 when
receiving literal data from sender. Fix by reading at most the size of
Receiver._senderInChannel.

Also remove faulty assertion in PrefetchedTaggedInputChannel.