Separate transaction logic from Conversation model

Attempt to split conversation and transactions.

In this PR there will be a lot of broken commits and a lot of commits with bad messages, but I'll squash them together later.

**Production check-list**
- [ ] Go through all added `TODO`s
- [ ] Go through all delayed job changes and make sure they don't break
- [ ] Practise migrations with real data
- [ ] Test all conversation/payment related JavaScript validations
Revert this