Modular types

Adds modular overlay types support as well as adding a modular plug-in system that can be used for other things such as modular configuration types.