Skeleton implementation of StreamInterface.
Rename Stream to AbstractStream, a new base class.
Add stream getter and setter.
setStream() no longer allows a null stream.

We implement a separate detachStream() method for the case where we
want to intentionally set our $stream variable to null. This allows
us to blindly call setStream() with something that should be a
stream, without having to duplicate validation work.