some more refactoring of internal model access layer
lhs-delete now remembers joins
rhs-delete now remembers joins
drop superfluous data access layer
use cached joins instead of recalculating
better isolation of join fn-ality
refactor join code