Switch to modular build

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