insertEffects: handle self better in signatures

For given signature, we wrap in a self lambda, which is applied when we
project. For a generated default signature, we read/write to self