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
Line is too long. [124/80]