#73 #74 Better exception handling

- Attempt to avoid threads dying unexpectedly by catching exceptions in run()
- Log exceptions