Change ProjectedPathConversion to use continuation passing style

o More tests
o Simplified PathValueBuilder
o Pulled out projectionStepConverter