Component loader

Component loading has been separated from entity loading. This helps keeping engine initialization and dependencies tidy