[TPL] Add mono internal API support

I compared to .NET, and this the way they do it on Windows too :

	bool called = false;
	bool called2 = false;

	var task = factory.FromAsync (
		(a, b, c) => {
			if (a != "h")
				Assert.Fail ("#10");

			if ((TaskCreationOptions) c != TaskCreationOptions.AttachedToParent)
				Assert.Fail ("#11");

			Assert.IsFalse (Thread.CurrentThread.IsThreadPoolThread, "#12");

			called2 = true;
			return null;
		},
		l => {
			called = true;
		},
		"h", TaskCreationOptions.AttachedToParent);

	Assert.AreEqual (TaskCreationOptions.None, task.CreationOptions, "#1");
	Assert.AreEqual (TaskCreationOptions.AttachedToParent, (TaskCreationOptions) task.AsyncState, "#2");
	Assert.IsTrue (task.Wait (5000), "#3"); // Fails here because the Begin method return value is null, and we do not invoke the End method in Begin
	Assert.IsTrue (called, "#4");
	Assert.IsTrue (called2, "#5");