Runtime test to reproduce threadpool+ProcessExit issue

Do make test-process-exit to run
Fixes threadpool+ProcessExit problem

The threadpool was being shutdown too early, before the ProcessExit event was fired.
This led to bugs such as NLog not shutting down
(http://nlog-project.org/2011/10/30/using-nlog-with-mono.html).
Fix serialization of DateTime struct for MS compatibility

Microsoft uses the UInt64 for the serialized dateData field.
Microsoft also uses Convert.ToUInt64 to convert the serialized
value to UInt64, which results in an overflow exception when
deserializing a DateTime serialized by mono.

Suggested change may break compatibility with previous versions
of mono, but should work with the Microsoft implementation.
Emit an explicit null check for some calls made out from gshared code.
Try to fix the build.

Include the MonoTrampoline definition inside the DISABLE_REMOTING block.
Fix MONO_CONTEXT_GET_CURRENT () clobbering a register before using it on ARM.
Fix the build.
Really fix the build :-)
Avoid the str pc,[r0]! instruction in MONO_CONTEXT_GET_CURRENT () which is not allowed by recent gcc versions.
Add System.Collections.ObjectModel.ReadOnlyDictionary.
Fix the handling of unresolved pinvoke methods in full-aot mode.
UTF8Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) can write past end of char[]. Fixes Bug#10788

UTF8Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) eventually calls into UTF8Encoding.InternalGetChars, which does not perform any bounds checking on the passed in char* until after the first byte > 0x80 is encountered. For instance:

byte[] bytes = new byte[4096];
char[] chars = new char[10];
int charactersWritten = System.Text.Encoding.UTF8.GetDecoder().GetChars(bytes,
0, 4096, chars, 9, false);

will result in no errors and charactersWritten = 4096.
Update Path.cs

Fixed Path.GetDirectoryName() bug when path is in the following form: 'C:filename'
Add some support for calling JIT icalls directly in full-aot mode.
Implement a fast version of mono_get_lmf_addr () on ARM by inlining the call to pthread_getspecific () into the managed to native wrappers.
When serializing floats and doubles, use the InvariantCulture, so that floats are always stored in Json format, not the locale-specific format;   As reported on irc
Added tests to PathTest.cs
Merge pull request #579 from LogosBible/bug10788

UTF8Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) can w...
Merge pull request #581 from TalAloni/master

System.IO.Path bugfix
Make x64 compilation work out of the box

Change the default projects that are compiled for x64