Start adding requested/returned types to the various emit functions.

The only real change is that now the return value for && is emitted
with the correct type.