Some fixes related to starting things from a background thread.

Our reachability code was starting on the current run loop, which in the case of something like:

dispatch_queue_t defaultQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(defaultQueue, ^{
  [[ATConnect sharedConnection] setApiKey:kApptentiveAPIKey];
});

Meant it wasn't going to work. I've also cleaned things up a bit to be a bit safer in this scenario, although I still don't recommend starting things from a background thread.