Chan now uses vector as buffer

and throws OSError rather than RuntimeError
throw OSError rather than RuntimeError
use std::string rather than char*
code cleanup: backend class FileStream no longer needed
Sock uses File rather than FileStream
printing to stderr is annoying
Errors can move-construct
just to be clear about this