PrintWriter hides exceptions

When PrintWriter meets exceptions, it does not throw it, but sets an
error state variable. Explictly throw an Exception, when PrintWriter
has detected errors so that the query executor knows that the download
has failed.
Server message processor process errors

The message processor should never exit unless gets interrupted or
meets Errors.
Add channel info in logs

Helps in debugging errors
Add abort download test