OK, here's where I think we're at, in concrete terms:
We have a HEADERS frame.
We have a HEADERS+PRIORITY frame that includes an extra 4 bytes up front.
Either can be sent in all the normal places that you would expect to
see HEADERS, SYN_STREAM or SYN_REPLY. Most importantly, when a stream
starts.
Pushed streams are unidirectional by virtue of being initiated by the
server, not by explicit indication. The server does not expect data
frames from the client and MAY discard them.