Wrapped DomainCrawler functions into an object.

Created the DomainCrawler object to encapsulate the domain crawling
functionality. Each DomainCrawler object is dedicated to a single
domain, and provides a callback that is invoked once the crawler is
finished with the domain.