Cleanup PageCrawler

This patch fixes the following issues:

 * PageCrawler has (had) no dependency with the WikiPage it was created from. This is kind of weird from an OO perspective.
 * PageCrawler was used to create pages. This can be done by WikiPage too (making the functionality somewhat vague). This patch moves that code out of the PageCrawler, leaving only the "tree walking" capabilities in place. 
 * Crawler related functions from all over the place have been gathered in PageCrawler, resulting in a clear consistent interface.
 * Instead of returning lists, PageCrawler take a TraversalListener for processing the pages found.