New threading model

This is a huge update. Moves over to a per-process per collector/handler model. Supports re-loading configs on the fly via USR1 signal. Supports re-starting failed collectors.