Replace custom `pip freeze` script with `pip-tools`
Replace custom `pip freeze` script with `pip-tools`

In the past we've avoided using out-of-the-box solutions for Python
dependency resolution because a) they haven't been very mature and b)
we've had lots of issues with version conflicts. See [[1]], [[2]] for
details. Instead, we've been using a custom Python script that
under-the-hood runs `pip freeze` and saves the output to
`requirements.txt`.

This script works well for us, but it doesn't integrate well with other
tools. On the other hand [`pip-tools`](https://github.com/jazzband/pip-tools)
as of 2020 seems to be well-supported by its maintainers and other
tools; for instance, GitHub's automated update service
[Dependabot](https://dependabot.com) supports `requirements.in` files.

At the same time, we've been better at keeping our dependencies
up-to-date and fixing version conflicts, so there is no longer any issue
caused by using `pip-tools` to generate our `requirements.txt` file. I
think it's time to give `pip-tools` another chance :)

This commit replaces our script `dmutils.repoutils.freeze_requirements`
with `pip-compile`.

[1]: https://gds-way.cloudapps.digital/manuals/programming-languages/python/python.html#applications
[2]: alphagov/digitalmarketplace-api@95ac122

alphagov/digitalmarketplace-api,alphagov/digitalmarketplace-api,alphagov/digitalmarketplace-api