Simple tool that allows a Type to be walked through distinct states and have arbitrary, user defined, ordered functionality applied to the Type.