Refactor and simplify cmake (as well as other layering related fixes).
Each module is now a static library, and you can (and should!) link dependencies directly to the module that uses it. Each module only specifies what it uses directly, then CMake does the work to combine the transitive dependencies of those things.
This also makes the dependencies between things explicit: you can see that a driver depends on e.g. aux_os, aux_math, etc. (and highlights layering violations, like an xrt header including an aux_os header)