Use Apply in singletonized type signature
Proxies, first attempt
Separate singleton generation into two passes

Everything except function bodies is promoted in the first pass.
Function bodies are promoted in the second pass. The idea is to
gather during the first pass information required for adding
Proxies (when singletonizing type signature) and in the second
pass use that information to generate the body with extra Proxy
parameters inserted.