FCPClientReferenceImplementation.run(): Documentation

- Explain why we can return upon connection loss without re-connecting:
Because the finally{} deals with it
- Explain in finally{} that scheduleKeepaliveLoopExecution() schedules
re-execution of *this* function and that the delay is chosen
appropriately depending upon whether the connection is alive or not.
FCPClientReferenceImplementation.run(): Don't catch declare-able
Exceptions

This catch block is only here to ensure that things such as
implementation errors, JVM errors, etc. do not kill the thread. So it
shouldn't catch declare-able Exceptions, it should rather handle them
properly.
FCPClientReferenceImplementation.KeepaliveLoop: Make sure to always
prevent thread death

The try { ...} catch(almost everything) is to prevent thread death to
ensure that the connection is always kept alive by the thread and thus
the try{} should contain all of the function. I had left some of it out
because I assumed that that code wouldn't throw but that is an arbitrary
decision.