Merge of MSVC_Build branch

Project builds under MSVC.
MSVC templates bug is avoided by creating separate include files for MSVC/Others and hiding actual implementation's #include behind #define choosing the appropriate implementation.

Added export headers ( __declspec(dllexport) ) generated by CMake for all library projects and used EXPORT_<ProjectName> #define to mark all non-inline public methods to tell MSVC create ".lib" export libs.

Empty #define for "constexpr" unsopported by MSVC