Crawl() is function that crawls a URL and provides the response body

We'll need a generic way of fetching the body of a given URL so that
we can store it for the mirrorer at a later date. This function is the
beginnings of that function.

It has also has support for retrying pages that return a 429 (Too Many
Requests) or 5XX status response by providing a bounded `error` object
that can be accessed over the public API.