Major reorganization

Many features now split into separate functions. Functions are spread
between files to give each file a unique identity and to make it easier
for us each to work on separate but interconnected aspects of the
project. Defined what major functions take as input and should return as
output so we have more structure.
Merge branch 'master' of https://github.com/efriesen/CS270-Visualization