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
Those are two different fases, the object retrieval fase which the objectRetrieveTimeout was about is after the session retrieving witch is the fase that tells you which objects are on the FC, on the second fase (object retrieval) that information is already know and it will only try to fetch the objects it know are present.