Session management retry

SessionManagement is not robust to communication failures and has no mechanism
to continue if an update of SessionManaging gets dropped. This uses the timeout that
was started to trigger a re-request. This resolves the problem for me and connections
establish reliably with radio link and USB.

While I was at it I also documented the code and moved a few methods around to make
the order more logical (moved the object retrieval code after the session management
code).

It might be easier to compare the changes before the last patch to see the important
changes. The large blocks of code that moved had no changes other than comments.

Fixes #1307
So this timer did have a purpose, as the name implies it is the timeout for the object retrieval fase, it was started with  startRetrievingObjects and if the object retrieval would take longer than 5 seconds the object retrieval queue would be emptied hence stopping further retrieval, you would still end with a managed session only not all objects would be updated.
I still think this is a nice this to have so I would prefer to keep it and have a new timer take care of the session retrieving possibly.