Added more documentation, converted logical operations to (hopefully) consistent 'route' metaphor, and moved all AND(iterator, iterator) stanzas out into a single join() function that is more descriptive of what's actually happening