refactor cmake editor to be less awkward to read
now uses objects to edit the cmakelists which drys the code considerably
but more importantly reduces each class content to the divergent minimum
rather than 90% boilerplate to do with editing in general