Patch Set 3: I would prefer that you didn't submit this

- on Mac the Preferences are located in the application menu hence we need to use a platform independent way to open them, I fixed this.
- on Mac the test shouldReturnListOfChanges() is failing with an assertion:
java.lang.AssertionError: expected:<1> but was:<0>
	at org.junit.Assert.fail(Assert.java:91)
	at org.junit.Assert.failNotEquals(Assert.java:645)
	at org.junit.Assert.assertEquals(Assert.java:126)
	at org.junit.Assert.assertEquals(Assert.java:470)
	at org.junit.Assert.assertEquals(Assert.java:454)
	at org.eclipse.egit.ui.view.synchronize.SynchronizeViewTest.shouldReturnListOfChanges(SynchronizeViewTest.java:92)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner.run(SWTBotJunit4ClassRunner.java:54)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.swtbot.eclipse.core.RemotePluginTestRunner.main(RemotePluginTestRunner.java:64)
	at org.eclipse.swtbot.eclipse.core.UITestApplication.runTests(UITestApplication.java:117)
	at org.eclipse.ui.internal.testing.WorkbenchTestable$1.run(WorkbenchTestable.java:71)
	at java.lang.Thread.run(Thread.java:637)
- in addition I see some NPEs in the error log when executing the SynchronizeViewTest :
!SUBENTRY 1 org.eclipse.team.core 4 0 2010-09-30 15:57:10.175
!MESSAGE An internal error occurred processing subscriber events.
!STACK 1
org.eclipse.team.core.TeamException: An internal error occurred processing subscriber events.
	at org.eclipse.team.internal.core.subscribers.SubscriberEventHandler.processEvent(SubscriberEventHandler.java:332)
	at org.eclipse.team.internal.core.BackgroundEventHandler.processEvents(BackgroundEventHandler.java:369)
	at org.eclipse.team.internal.core.BackgroundEventHandler$1.run(BackgroundEventHandler.java:203)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.NullPointerException
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.getPath(GitResourceVariantTree.java:191)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.fetchVariant(GitResourceVariantTree.java:88)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.fetchVariant(GitResourceVariantTree.java:75)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.getResourceVariant(GitResourceVariantTree.java:150)
	at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.getSyncInfo(ResourceVariantTreeSubscriber.java:52)
	at org.eclipse.team.core.subscribers.Subscriber.getDiff(Subscriber.java:371)
	at org.eclipse.team.internal.core.subscribers.SubscriberDiffTreeEventHandler.handleChange(SubscriberDiffTreeEventHandler.java:162)
	at org.eclipse.team.internal.core.subscribers.SubscriberEventHandler.collect(SubscriberEventHandler.java:219)
	at org.eclipse.team.internal.core.subscribers.SubscriberEventHandler.processEvent(SubscriberEventHandler.java:310)
	... 3 more
!SUBENTRY 2 org.eclipse.team.core 4 0 2010-09-30 15:57:10.176
!MESSAGE An internal error occurred processing subscriber events.
!STACK 0
java.lang.NullPointerException
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.getPath(GitResourceVariantTree.java:191)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.fetchVariant(GitResourceVariantTree.java:88)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.fetchVariant(GitResourceVariantTree.java:75)
	at org.eclipse.egit.core.synchronize.GitResourceVariantTree.getResourceVariant(GitResourceVariantTree.java:150)
	at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.getSyncInfo(ResourceVariantTreeSubscriber.java:52)
	at org.eclipse.team.core.subscribers.Subscriber.getDiff(Subscriber.java:371)
	at org.eclipse.team.internal.core.subscribers.SubscriberDiffTreeEventHandler.handleChange(SubscriberDiffTreeEventHandler.java:162)
	at org.eclipse.team.internal.core.subscribers.SubscriberEventHandler.collect(SubscriberEventHandler.java:219)
	at org.eclipse.team.internal.core.subscribers.SubscriberEventHandler.processEvent(SubscriberEventHandler.java:310)
	at org.eclipse.team.internal.core.BackgroundEventHandler.processEvents(BackgroundEventHandler.java:369)
	at org.eclipse.team.internal.core.BackgroundEventHandler$1.run(BackgroundEventHandler.java:203)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)