Reorganizing file placement

Making Makefile put object files in a build directory. Putting C++
code into a src directory. Updating Makefile to make future changes
to building setup and code setup easier to maintain.