Do not print error codes by default

Adds a new compiler flag to emit error codes, and disable it by default. Fixes #693.

OK. this is a compromise :D
MSBuild needs the category at least. this way we lose the code, but keep the category, and still get MSBuild to work without having to pass in flags, and would be safe to checkin now, instead of having to do some release gymnastics to get it in the right branch at the right time.
If you feel strongly about it I can change it. I am fine either ways.