belongs_to can be treated the same way as has_one
reflections know if they are collections, so ask

We don't need to poke at the macro to figure out if we should look for a
cached record or not
fix variable name. we're constructing a model, not an association
we always have a reflection and it is on the node
extract conditional to the caller
we always have a model now
push up the loaded target checking
keep track of AR objects we've made as we walk the tree

Remove duplicate removal code because we avoid adding duplicates as we
walk the tree the first time
the parent hash keeps the records unique already
remove useless code

turns out that the activerecord object will always have the same id as
the row from which it was constructed
remove dead code
JoinDependency will take care of making things unique
push up `select` exclusion
calling construct_relation_for_association_find is no longer necessary
eliminate duplicate code from to_sql

I don't really like passing the block, but this seems easiest for now
eliminate single use method
push the node->AR cache up one level
remove delegate methods that are not used
unhook `join_constraints` from the @tables ivar
rm JoinHelper from JoinAssociation