This is the basics of component discovery along with some tests. The next set of changes will integrate it into the compilation process.