add InternalReduce, CollReduce & IReduce protocol impls for Triple type
refactor join-optional using loops & transients
bugfix select-with-bindings (remove nil values from result seq), update select-join to support optional joins, update use of core.reducers fns in select-transitive, bugfix ns decl for clojure.core.protocols in core ns