Restructure to include a unit test harness

breaking apart the project let me know if this is overly eager at the moment.