Make project on timeVaryingTransforms safer

Add a TimeInvariantWrapperTransform member of TimeVaryingTransform, and use
that in TimeVaryingTransform::project for thread safety.

This is the strategy previously used in Distribute, but putting the alias on
TimeVaryingTransform gives us more safety if Distribute is not in fact the
top level transform.

Note: copies are only made off of calls to project, so having the alias on
every TimeVaryingTransform is not too wasteful.