The algo could still use improvements. In addition, the order of
execution of the callbacks means that the lower granularities will
always be available first, even if higher granularities were requested.
Note that there are some strange libchangeset errors now.
Just return the granularity discovered to be empty from findPath and
provide it to requestChangesets. This is very sub-optimal, as it will
almost always result in granularity==1.
There are still some bugs in the traversal algorithm, as well
as bugs being triggered in the server. Also, for some reason it looks
like there is a problem with the attribute pool not containing certain
elements.
findPath works. transition requests changesets from server. processing
of changesets works correctly.
Only need to manage the async-ifying of transition, which is currently
written as a while loop, (with a short-circuit break for debugging).