Add tests / CI
This change refactors things a bit to make testing important components easier, and adds some build testing in gitlab CI
This change refactors things a bit to make testing important components easier, and adds some build testing in gitlab CI