add public to the definition of bad_lexical_cast
Add make_enum macros and a unit test, also add to project files
refactor team to use MAKE_ENUM macro for team::DEFEAT_CONDITION