Added MONO_API macro to annotate and control visibility of public (exported) APIs.

This is especially useful for Windows since this way there is no need to maintain a separate .def file with exports which is usually out-of-sync with the latest revisions. This could also be used to control visibility with GCC/Clang so there would be no need for MONO_INTERNAL (could be removed while changing the default visibility to hidden).
Faster index lookup in RemoveInternal
Merge pull request #722 from JulianHamilton/master

Faster index lookup in RemoveInternal
Merge pull request #681 from tritao/dll-api

Added public API visibility macros
Variable has_ld was renamed
Fix the non-MSVC build.
Put runtime-invoke wrappers of valuetype methods into a separate cache, they have a different signature.
Add support for constrained gsharedvt calls to IComparable<T>.CompareTo ()/IEquatable<T>.Equals (). Fixes #13704.
Fixed MSVC build, ported to Visual Studio 2012.
Improved exception handling with vectored exception handling.
Now a native debugger can be used with soft debugger running without triggering any exception. Code provided by Jonathan Chambers:

* https://github.com/Unity-Technologies/mono/commit/e9f9f7170914c5caaff3e95e09f6f58ecced2a10
* https://github.com/Unity-Technologies/mono/commit/4c2e1db60ccb38e792545d595d85b12ff309a919
* https://github.com/Unity-Technologies/mono/commit/bd7e534aa7da49b89787b8c1b40e165a34c0e960
* https://github.com/Unity-Technologies/mono/commit/b885251a83969d243deabc56bb3d1495d4a971dc
Fixed SGen build for MSVC
Working SGen on Windows/MSVC build.

NOTES:
 * All GC tests with exception on OOM handling passed.
 * mono_thread_state_init_from_handle signature changed as Windows can't access other thread native TLS.
Fixed incorrect pointer arithmetic on SGen for MSVC.