WIP: Play with a way to start moving logic to POROs by delegating model behavior

This is an extremely small first step towards getting logic out of the
activerecord models, it should not change any behavior and ultimately
just adds a level of indirection, but it enables us to start separating
these responsibilities and developing a pattern of how to handle logic
separately from models, as well as allows us to see where things are
called implicitly so that we can invert that to be more explicit.

Relates to #5636
I agree with @athal7's approach here. There are obvious improvements that can be made, but primary goal of a refactor should be to ensure that we're replacing functionality with similar functionality. Extract to an area where we can document and test it thoroughly, then make it better! :+1: