Retry on git exception

Usually github is not available for a few seconds. During the 24 hours period it could cause a lot's of issues. And it causes for us. Combining this with the scmCheckoutRetryCount we can avoid the failed builds caused by the github temporary outage. The original exception is only shown for the last iteration.
Indentation fix.
Check getInstance() for null

It could happen that Jenkins.getInstance() is null.
Reverting 049e7e792e9345f3806076a3d3e137d9ab552458

It seems we should fix this problem in a different place. Somewhere here: hudson.model.AbstractBuild.AbstractBuildExecution
[JENKINS-14575] Wrap GitException into IOException

The retry logic does not catch the GitException, so we have to wrap into a IOException. Clone and Fetch also affected. As of now the scmRetry will work with the git plugin.
[JENKINS-14575] Wrap GitException into IOException

Do the same if the repo exists and don't have to clone.
Ignore .idea folder (IntelliJ)
Add failing merge cases, and fix now visible bug
Merge pull request #144 from lanfeust69/master

Add failing merge cases, and fix now visible bug
[JENKINS-14575] We don't need to catch it here.
Merge pull request #143 from woohgit/master

[JENKINS-14575] Fix to make the retry logic work with GitSCM
Fix serialization error when using Merge feature on a slave
Merge pull request #148 from lanfeust69/master

Fix serialization to slave