Make AuditTrail use an ActiveRecord association to expose and build audit events

This uses ActiveRecord associations in the ActiveRecord backend to expose the events, so we can automatically do stuff like `order.order_financial_status_transitions` in Shopify, and also to create audit events in the code, which makes it a bit simpler. This is also good for me, because I can use `:inverse_of` on the `OrderFinancialStatusTransition`'s `belongs_to :order` association to save queries during checkout.

@wvanbergen look ok?