Ticket #23587 - Fixed issue where panel would not reinitialize after launching a dialog.

- Added controls for how long to wait in-between heartbeats and how many heartbeat errors before failure.
- Refactor of extension to handle reinitialization more cleanly to avoid relaunching python
- Added logging to the extension via LogBook.