Changed Decoder to be like WebSocket Decoder.TextStream, and Provides.Type.SET bound

This smoothes out conceptual gaps relating to how decoders act and how they are specified.  This also allows for us to hook in binary types, should we in the future desire to.