Make module ready event always be async

Need to make sure `Controller.renderModules` cannot callback before it has returned, so make all modules always be ready asynchronously, in particular when they don't have a collection so don't need to wait to fetch.