File splitting, headers, and testing

Split all major components into extra files with headers,
modified the simple makefile (makefile) accordingly,
added test functions for the major components and mathematica
notebooks for visualisation of these tests
added all files meant to be added to the previous commit