Cmake cleanup

This primarily cleans up the cmake build and enables multiprocessor builds for MSVC.