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**
- [x] Fix all tests
- [x] Go through all added `TODO`s
- [x] Build to staging
- [x] Go through all delayed job changes and make sure they don't break
- [x] Practise migrations with real data SAMPO
- [x] Feedback skipped is not migrated
- [ ] Rollback strategy

**Test on staging**
- [x] No payment
- [x] Post pay with Braintree
- [x] Preauthorize with Braintree
- [x] Preauthorize with booking and Braintree
- [x] Testimonials
- [x] Checkout
- [x] Contact message + call to action
- [x] PM
- [x] Unread count
- [x] Transactions admin view
- [x] Paginations (inbox, admin transactions view)
- [x] Test all conversation/payment related JavaScript validations
Yes, these should be sanitised by preparing the parameters with:
```ruby
execute("select * from people where id = ?", id)