Refactor daemon.attach()

Also makes streamConfig Pipe methods not return error, since there was
no error for them to be able to return anyway.
Seems like `streamPipe` can be nil, you can see this with `docker run -i -a stdin busybox echo foo` which also immediately crashes whole daemon :)