LabToolDeviceCommThread: avoid zombie processes if dfu-tool isn't executable

See https://bugreports.qt-project.org/browse/QTBUG-5990
Qt has this bug where if the executable passed to QProcess.start() somehow fails to start, it could leave zombie processes around even if the user calls WaitForStarted() and WaitForFinished() correctly.
This patch works around a common source of this bug by checking the permission of the "dfu-util" executable before attempting to execute it.
LabToolDeviceCommThread: allow launching LabTool from ./app/LabTool

This makes the path handling in LabToolDeviceCommThread::prepareDfuImage() more consistant with ::runDFU() and allow launching LabTool from "./app/LabTool", i.e. one directory level up.
LabToolDeviceCommThread: call WaitForStarted() in runDFU()

From the QProcess state machine design it's more correct to call ::WaitForStarted() and not call ::WaitForFinished() if the former fails.
This patch also make "DFUProcess" a local variable instead of a pointer to heap allocate object to make forgoetting to call delete on error paths impossible.
Merge pull request #5 from scottt/launch-dfu-util-fix

Launch dfu util fix