Moved projection input_fns to Projection from CFProjection

It makes sense to define the output_fns and input_fns together in one
place.
Updated state_push/pop to operate on projection input and output fns