Live binding in trees

Because of optimizations made earlier, tree content was unlinked somewhat from objects' related objects.  This commit fixes that for:
* Program-directives mapping
* Directive-sections mapping
* All types of Relationships when the Edit buttons are clicked within trees

Also the join models have been refactored into their own file, and have a new superclass, can.Model.Join