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
More, if doing a Model.find_by_sql, do it like this:
```ruby
 foo = "bar' AND id='test"
Person.find_by_sql(["SELECT * FROM people WHERE id='?'", foo]) 
#=> SELECT * from PEOPLE where username = ''foo\' AND id=\'test''
```