add custom logging level DATADUMP=5

This adds a custom logging level (5) so we can do `log.datadump(hugeMessage)` rather than `log.debug(hugeMessage)`. The huge outputs make the logs difficult to read but they're sometimes useful. This way we can remove the outputs by default without removing them completely.

I've started looking at moving the huge message outputs into datadump, as well as reclassifying outputs that are currently misclassified, and also adding outputs that don't yet exist. I had thought to do them all at once but I think I'd rather do them in smaller chunks as I've realized that there are outputs in parts of the code I hadn't even seen yet and I need time to inspect them all so I don't make bad changes.

I have located most of the biggest offending huge message outputs and will probably make a PR soon to move them to datadump if there aren't any objections to all of this.

The conventional name for the keywords dict is `kwargs`.