Reorganized addition

Split up one giant main file into multiple header files and a much
smaller main file.  This addition also is includes all the source code
yet created and the current version of the program.