Adding support for dependencies in plugins
Adding language plugin executor module to replace some functions in main
Separating out the plugins file parser to a separate module
Moving language plugin-related code to a subfolder
Renaming some files
Resolving code re-organization