This change does two things: 1. The old `BounceRecord`, `BounceType` and `BounceSubtype` types are removed from the `auth_db` module into `bounces`, so that they can more easily be re-used when writing bounce/complaint data to Redis. 2. Those types are renamed to `DeliveryProblem`, `ProblemType` and `ProblemSubtype` respectively, and the `bounces` module is renamed to `delivery_problems`. That may seem weird at first, but I have good reason for it and am open to alternative names if anyone can suggest something better. Historically we've always treated complaints as a type of bounce event, but that's inaccurate because bounces are never preceded by a delivery event whereas complaints are always preceded by one. This has caught me out in the past when analysing metrics and expecting a blanket sum of `deliveries + bounces = sends` to be true. It isn't. It's only true if you filter complaints from bounces before calculating the sum. Because of that, I wanted some different nomenclature that didn't use "bounces" as an umbrella term for "bounces and complaints". It won't affect the names we use in the metrics but I think it's important for language we use in the codebase to be as precise as possible. Things like "delivery error" or "delivery failure" also seemed inaccurate for the same reason; a complaint implies that the actual delivery succeeded. Hence "delivery problems", which seems generic enough to legitimately include both event types.