Add a basic Stream implementation - still needs loads more work but is already useful.