Changes dependency search to look for by target and by program
Updates TODO
Creates error message for empty program variables
Updates TODO
Refactors and standards message output functions