red-brick: Avoid TOCTTOU race condition in callback handling

Also avoid unnecessary locking and simplify code to improve performance
by about 10%.
red-brick: Collect async read chunks in a list and join them at the end

Instead of constanly extending the bytearray. gives a small performance
improvement.

Also don't emit the status callback every 60 bytes, but every 2000 async
reads, just as for async writes.
red-brick/pi: Abort running file read/write if download/upload dialog is cancled
red-brick/pi: Use download dialog for downloading files
red-brick: Prefix all traceback.print_exc() to make debugging easier
red-brick: Compile on RED Brick as user
red-brick: Keep track of async read abort state

This ensures that data inflight at the time of the abort call is
correctly dropped when received.
red-brick/pi: Fix cursor position in download log
red-brick/pi: Fix unicode error in download log message handling
red-brick/pi: Don't create already existing host directories on download
red-brick/pi: Ignore async read abort error in log view dialog
red-brick/api: Don't forward callbacks if callback reception had an error
red-brick: Make session keep-alive more robust

Use a dedicated Python timer (thread) for keep-alive calls to be
independent from the Qt UI thread thta might be blocked by other
actions.

Also make the keep-alive interval shorter and the session lifetime
longer to reduce the chance for session timeout in high-load
situations.
red-brick/api: Reduce Async burst size to reduce the change for timeouts in high load situations

Also do a read/write status update on the start of the operation to
improve UI feedback in high load situations.
red-brick/pw: Improve permission handling in up/download dialog
red-brick/pi: Disable program callback if program info widget is hidden

And also when a up/download dialog is used. This avoids unnecessary
program object updates. Which would result in degraded performance
especially if progeam object updates are done with a high frequency
while an up/download is in progress.
red-brick/pw: Purge incomplete program on upload error