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.