(CFACT-117) Use forward-declarations for Windows.h

Use forward-declaration instead of including Windows OS headers to avoid
polluting headers with too many includes/defines.

This doesn't really simplify anything because Unity builds still include
everything, but Unity builds are only a stepping stone until we have a
better C++ modular build solution.