std::bitset constructor was ambiguous because in C++11 the parameter
changed from unsigned long to unsigned long while MSVC violates the
standard by also having a constructor taking an int parameter.
* SET_WARNING_FLAGS for warning options (don't affect binaries)
* SET_OPTIMIZATION_FLAGS for compiler & linker optimization options
Also, re-enable some warnings that were disabled and instead suppress
them for the individual occurences.