Generalizing initialization tasks

- Added an isInitialized flag
- Adding the ability to wait for initialization tasks
Creating a separate initialization queue
Throwing exception if bundle requested when repo not initialized