Define NOMINMAX to prevent macros in WinDef.h causing problems with std::min/max usage