Recursively converts the Struct value to a new container type.

This function is always recursive, since the non-recursive version would be just container_fn(value).

value An Struct, possibly nested.
container_fn A function that takes a list of (name, value) tuples ( the elements of an Struct), and returns a new container holding the same values.

A nested container of the type returned by container_fn.