avoid unneeded usage of debug.hpp header for fatal errors
reduce boost/algorithm and boost/karma usage in headers, break out featureset.hpp, cleanup debug.hpp usage, and a bunch of other refactoring