Switch to modular build

Split the build into subprojects.
This will be useful as we start building "peripheral" features, specially with the filters architecture.