Reconnect carbon on failure

I'm not pleased with Ruby's socket handling in general. This final solution still results in exchanging a dropped metric for a reconnection, but I think this is better than nothing. See the earlier commits in this branch for examples of my different attempts.

refs #12 

cc @gorsuch