Changes to prevent hanging when the service gets destroyed

I think the primary fix was removing the `stopSelf`, but the other changes should also help get things back to good state when there are problems.

With these changes I had 2 nights in a row with no hanging.  Before that every 4-6hrs I'd need to unplug/replug the usb cable to get monitoring working again.  There always seemed to be a call to `onDestroy` right before things fell apart.

While debugging I added some better logging and exception handling that should be useful going forward.