cmake-work

Initial splitting up and cleanup of CMake code (looking for feedback for now; merging would be best held off until the other directories have the same treatment). I'll add comments inline as to where some things need attention yet.
@mathstuf also not entirely sure if github notifies you of comments on your PR, so just mentioning you by name here just in case;)