Added PageBuilder interface. Use it wherever we can.
Separated PageBuilder from PageCrawler. PageBuilder is a separate class now.
Remove changeable state from PageCrawler. Removed setDeadEndStategy() from interface.
Unify order of PageCrawlerImpl.getClosestInheritedPage with the rest of the methods.
Add getClosestInheritedPage to PageCrawler interface.
Remove unneeded inheritance from ClassPathBuilder
Move getAncestor* methods to PageCrawlerImpl, since it's about traversing the page tree.
Ensure PageCrawler.pageExists()/getFullPathOfChild()/getFullPath()/getRelativeName() use same context page as the one page where it's created from.
Assert context for PageCrawler.getClosestInheritedPage()/getSiblingPage()
Add PageCrawler.getAncestorsStartingWith()/getAncestorsOf() to PageCrawler interface.
Ensure PageCrawler.isRoot()/getRoot()/traverse()/getAllUncles()/getAncestorsStartingWith() get the right context object.
Ensure the PageCrawler.getPage context is the same as the object the pageCrawler was taken from.
Make all PageCrawler calls relative to the wiki page used to obtain the crawler.
Move isRoot() from PageCrawler to WIkiPage. It's a page property.
organise imports
Rename PageCrawler.getAncestor*() methods, since the name is no longer matching.
Merge PageBuidler with WikiPageUtil.
Use callbacks for methods that traverse pages.
No need for PageCrawler.getAncestors() anymore.
Cleanup in PageCrawlerImpl