Because we need to be able to make compounds from FileBytes and ByteStrings. 

That said, I also found the double Compound structures (CompoundBytes and  ByteString.ByteStrings) not the clearest way to structure things because it opens up multiple ways to do the same (at least with types) like the question "What's the difference between CompoundBytes(a: ByteString, b: ByteString) and ByteStrings(a, b)?". 

If we'd want to integrate both kinds of Compounds the result will be a much more intrusive change that what we now have. I.e. we'd would rather remove `ByteString.ByteStrings` than `CompoundBytes` because `CompoundBytes` is the more general one which has far reaching consequences.