Add MSVC 2005 express support.
Keep from passing empty parameters to macros.

This will remove some warnings about missing parameters from MSVC and will
remove some warnings that would be generated when using g++'s and clang++'s
pedantic option.
Add a macro testing file.