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.
With one exception, name == group, so if you want to make that the way, I can merge the two.