typecast records returned from the db rather than to_sing everything
@associations can never have an array, so remove the dead code
decouple JoinAssociation from JoinDependency
hide join_parts internals from other classes