Optimization to prevent UI from being unresponsive on low speed machines.
* Moved decoding of status to program exec thread instead of doing
  the work on the GUI thread which would make the UI unresponsive when
  a lot of data is coming back.
* Added new events to deal with new status data and device detect.
* Removed unnecessary post events to UI, process queue will post event
  if there is any pending data.
* Remove machine status from toolbar as it was creating extra UI refresh
  issues; the machine status panel should provide all the information
  needed (basically removed duplication of information and work).
* Fixed issue where open document was allowed while state was ruining,
  this was a bug with where the UI an deprogram exec thread would get
  out of sync and none of the updates like program counter (PC) update
  will make no sense.