An NSNotificationCenter replacement reducing boilerplate around threads and execution ordering