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
I see why this is painful looking at the get_conversation_statuses-method but this is just is completely against the basic idea of services. That is command and queries would run out of process and there is no way to pass AR model objects over the wire. I'd bite the bullet now. :)