Fast, packed, strict and lazy bit streams for Haskell with stream fusion