[#75962418] Write non-HTML content to disk

This adds support for writing the following file types to disk:
- ATOM
- CSV
- DOCX
- ICS
- JSON
- ODP
- ODS
- ODT
- PDF
- XLS
- XLSX

Created a new `http_crawler.CrawlerResponse` object that will hold the body and headers for the HTTP response. It then provides some helper methods around `Content-Type` values that we support that are used elsewhere in the workflow for the function `WriteItemToDisk`.
I've just rebased all of these commits, so that last commit can now be found at 34dc359.