Move marker persistence call to inside update_done

This will allow handle_async_done to persist the marker.
It would have failed otherwise
Add test for the completion of a tree graph

Tests that when the final marker is done and marker.update_done is
called, the root marker will be marked as done and count_done will be
called a certain number of times.
Fix test to check for proper count, Tests pass

Add document to test illustrating the count each marker
has update_done called with explanations.
Add Test the number of times each marker is persisted
after the initial persistence of the graph. Change code of
completion_marker module to pass tests