Remove CallMetadata

This was introduced to not break backwards compatibility during evaluation, but it is an ugly concept. That primitives have to store some state information about the last call for it to be optionally retrieved with another call.

Ideally, each call which is currently setting CallMetadata would just return a tuple with output + metadata. This is much easier to reason about and does not require any state. But callers then have to handle the returned value to access real output and not metadata. Because callers are machines, I think this is OK.

To make it easier for primitive authors to implement this, I suggest to have a @output decorator which would add simply metadata in cases where there is no special metadata.

Others can return the whole metadata object.