Rework startup and CardThread termination logic

Also, ensure that already-known threads will be reinstantiated if they
die, and make sure that there can only ever be a single DeviceRegistry.