Only define recursive combinators if necessary.
Transitioned to screamer-based code.

Much improved performance and code clarity over prior implementations.