added PathConsumer which states that the step accesses Path information. Makes HolderOptimizer much simpler and less error prone. Added CyclicPathStep and respective cyclicPath(). Added test cases for cyclicPath() and simplePath().