[5.0] Separate Component Registration

This pull request replaces @crynobone's #5508. It's been rebased, and fixed to work on the current master.

> This would allow customization for advanced developer to choose if they only need to register specific component type instead of all three, it also give the freedom to developer to define the path for config, lang and views if they feel the need to.

---
Replaces #5508. Relevant to #4928.