More compact representation for strict ByteStrings avoiding the
overhead and indirection caused by ForeignPtr.
This representation is useful to reduce the incurred memory overhead
when operating with many small, long-lived, distinct byte strings
(such as keys for containers).
See documentation in Data.ByteString.Plain for more details about
this representation.
As an alternative, recent bytestring versions provide
Data.ByteString.Short which has a similiar overhead but uses unpinned
memory instead (and thus requires an additional string data copy in
contrast to Data.ByteString.Plain which allows to share the string data
with the associated Data.ByteString value).