Async require modules

No promises and backwards compatibility problems, just the reentrance bug fix and the ability to requireModules before you create them.