Add support for periodically archiving the transaction billing table

The transaction billing table has an entry per message which means it'll get large very quickly. We should archive data regularly (probably at the end of each month we should archive data older than N months).
We don't seem to test that we set the statuses properly (from created to uploaded to completed). It doesn't seem like something easy to test though. Happy with that being untested if there's no easy way to test that.