Generic, composable IO input and output streams
