This change better handles the situation where t-shirt-0 and t-shirt-1
are requested and owed to the same donor. We've added even more t-shirt
request types at this point meaning many shirts can go to one donor, and
this change should better handle that situation.
This change, which is not properly documented nor tests present, adds
support for making sure those who don't want emails from us do not
receive them.
I believe I've caught most of the places we want this change supported.
Requests can now be placed "on hold", and getRequest() can ignore held
requests.
This required addition of a table, and another API call holdRequest().
Tests were not written here, which was a mistake. Unit tests and docs
are needed. A FIXME was added, at least.
Also, minor imporvements to reporting on fulfilled requests.