Makefiles: Use .DEFAULT to support arbitrary targets from sub directories. Taking advantage of the .DEFAULT construct means that we won't need to explicitly list targets such as "clean", etc. in each sub-Makefile.
Makefile: Incorporate getline implementation into the build. It's unconditional for a very short time. We expect to soon be building it only if necessary.