Multiple export fixes for building 

Multiple fixes for symbol exports, when building OpenEXR as a DSO/DLL:
- Instead of relying on per-project differing setting to specify whether a DSO is being built or not, all projects now use the OPENEXR_DLL preprocessor define.
- Harmonized the definition of <project>_EXPORT macros. This could probably be even further centralized.
- Added IexMathExports.h to correspond with how exports are defined in other projects.
- Added the use of symbol visibility when building with gcc.
- Many classes were missing <project>_EXPORT macros.
- throwErrnoExc had the EXPORT macro in the wrong location, leading to no export on Windows and warnings by clang.
- Fixed a tricky export issue with libHalf lookup tables on Windows (cannot dllexport const values).

All these changes taken together clean up symbol exports on Linux, fix symbol export issues on Windows, and subsequently allow the removal of createDLL from the Windows build process.

Note: No changes have been made to Makefiles or the Visual Studio project files. We build exclusively with CMake (separate commit and pull request).