Fix issues with dependencies

 - Went back to recursive make structure because it simplifies the use
   of target specific variables. Parallel make still seems to work
   perfectly. Only problem is it reports 'nothing to be done for build'
   rather than 'nothing to be done for [debug|release]' but that's
   bearable. Directories are only created once rather than for each
   binary output.