Change some parameter names to be more normalised
Add some demos of the new snapshot shenanigans

It seems that we need explicit product and coproduct generic instances
for DepFn0's that use Generic[_] as an argument. On the plus side,
Lazy[Generic[_]] works!