[STF] modified shell recovery algorithm

The recovery algorithm will now try to close
all shells using a concrete SWTBotShell object
as it is possible the multiple shells can have
the same title.

Also increased the retries from 2 to 5 times.

Change-Id: If4529a6533336d45635d03525aeea7ecfe217902
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/580
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>
[NOP] replaced cancellation check statement

Change-Id: Iabbd637aa6b85e5d2df2c976e97556f9b2a958ce
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/581
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>
[FIX] fixed a NPE

The Smack API does not always tells the developer
if a returned object may be null.

Change-Id: I2f89aec4135516261ad4de1733417bfb8a99d60c
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/582
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>
[FIX] fixed a NPE

getSarosSession() can return null at any time,
even if the SessionManager calls you when it just started a session.

Seems we have some concurrency issues in the 
SarosSessionManager regarding starting and stopping
a session.

Change-Id: I07bd5ccd72aa15f4bb736d59602125a5f7774d6a
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/583
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>
[NOP] always send the correct session ID

Send the session ID the project negotiation process was created
with.

Note: This currently does not fix anything.

If a session is closed the session termination packet will mostly
send first before the cancellation message is send. This
may result in a state where this cancellation message is silently
dropped because it is a session packet and the remote side is not in
a session anymore.

Change-Id: I199c3e3c7483c6e033cca2757ac61190afdf4bfb
Reviewed-on: http://saros-build.imp.fu-berlin.de/gerrit/584
Tested-by: Jenkins CI
Reviewed-by: Stefan Rossbach <srossbach@arcor.de>