switched StreamRequest to a struct

This approach with an explicit "Op" field seems to work better with
golang than the type-reflection / type-casting pattern.