Safer initialization of the Async internal synchronization objects.

This PR builds off the `Delay` updates created by @pitr-ch while improving the thread safety of the global gem configuration. It follows a similar pattern of using `Delay` to lazily initialize the internal synchronization objects. It also adds an `init_mutex` method for creating the aforementioned `Delay` objects. To protect users who may neglect to call `init_mutex` the other methods make a nest-effort attempt to safely initialize the internal state when necessary. Several notes in the YARD doc warn the user of the potential danger in not calling `init_mutex`.