Add new interop methods to NSThread for invoking delegates.

This change adds convenient methods to invoke an Action delegate with optional parameter either synchronously or asynchronously on a new background thread, the main thread, or a specific thread.

Examples:
NSThread.StartNewThread (() => DoSomething());
NSThread.MainThread.Invoke (() => DoSomething());
myThread.Invoke (() => DoSomething());

This commit also removes the redundant and verbose DetachNewThreadSelectorToTargetWithObject overload.

Finally, this commit adds and installs NSThreadSynchronizationContext.