Avoid using NULL in pointer arithmetic (-Wpointer-arith)

http://msdn.microsoft.com/en-us/library/windows/desktop/aa364934%28v=vs.85%29.aspx says that the return value is zero anyway if the function fails.
Avoid using NULL in pointer arithmetic (-Wpointer-arith)

Length() returns Standard_Integer, okay to compare to 0
Avoid redefinition of M_SQRT2

Really this line could just be "#if !defined(M_SQRT2)"
Move finite check outside of if (NOT WIN32) block

Prevents redefinition of finite in src/OSD/OSD.cxx for MinGW
Change OSD_WNT_KEY to use LPCTSTR, change _int64 to int64_t

Fix -Wwrite-strings warning about implicit conversion of const char* to LPCSTR. Fix warning about right shifting a 32-bit integer by 32 (see HIDWORD macro) by actually making _int64 a 64-bit integer.
Change MB_DESC to use const _TCHAR*

Fixes -Wwrite-strings warning about implicit conversion from string literal to _TCHAR*.
Merge pull request #406 from tpaviot/review/MinGWcompilerWarningFixes

Fix MinGW casting errors / redefinitions / pointer arithmetic