remove extra blank line
consolidate build rules for object files
automatic discovery of source directories
move cuda output from build/.../.cuo -> build/cuda/.../.o

This will allow nvcc's -M dependency generation option to work
harmoniously, since it assumes that output will have a .o extension.
automatic dependency generation
pretty the build with the Q variable

Unset Q (in the environment) to see full commands, or edit in
Makefile.config.