[WIP] Selectively reducible combinators

This is going to allow for the selective reducing of combinators, e.g. you will be able to reduce an alternation without reducing either or both of its subcombinators, or reduce a concatenation such that your reduction can use the computed results of reducing its subcombinators (as with the definitions of nullability, cyclicity, parse forests, etc).