This class encapsulates Attachment metadata and maintains an InputStream that represents
the data for the Attachment object.
This class is designed to only be used once, since the InputStream can only be used once.
It should only be used within the AttachmentDataDao classes, when dealing with
database Attachment storage.
Once an object has been used in a Hibernate session (e.g. saved), it should be evicted
from the session, otherwise the object may be cached and a consumed InputStream will be
returned the next time the object is used. Evicting it will cause a new object
to be created.