Concurrent downloading

SiteMap.Create() will initiate limitless download workers. It will block
until all workers have completed.
Change SiteMap into Crawler

Besides name changes, the Crawler doesn't store any map. It's job is to
simply output unique pages as it comes across them.

Make ResourceSet to make it clear the difference between just record
keeping with sets and the final output: Pages.