Marshal data based on entity properties.

It is far more intuitive to marshal data based on the entity properties
instead of the association names. Rework the code so that is how it
works. The includes array is still association names, so that it is easy
to generate based on the associations a table has.