Rewrite receipt-handling code (#3901)
* Rewrite receipt-handling code
* Add tests around dangling receipts
* Fix mark as read for some rooms
* Add missing word
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
Co-authored-by: Florian Duros <florianduros@element.io>