Mostly revolved around the new MSVC check for functions that don't cover all paths (ie. a switch statement without a default case). It appears to not see an assert as a valid default case.
I switched assert(false) to exceptions in these cases. I believe this should also abort the program, but will also provide a hopefully useful message? Hopefully this is an improvement.
Resolves#32
* move things to the common library and remove next_dir
* fix for windows
* one last windows fix
* last fix for real this time
* debug listener test
* fix listener threading bug