A wrapper type that unifies types which represent a stream. For example,
plaintext TCP streams and TLS/SSL over TCP can both be wrapped by this type.
This allows dynamic behaviors at runtime, such as enabling TLS/SSL through
configuration or allowing clients to request an upgrade to TLS/SSL from a
plaintext stream.