Assorted preloader and has_many fixes
Make HasMany a record and remove reflection

__target__ stores the full record, reflection can be retrieved from
target.
Preserve record order given to preloader