Unit tests infra, out of source builds

Sending as a single pull request because the out of source work requires the unit tests infra.