io.pipes: If dispose on in>> throws, then out>> leaks.
io.launcher: Fix two potential bugs.
1) If first (pipe) succeeds but second one fails, first pipe leaks.
2) out>> dispose fails, then in>> dispose is never called and leaks.
io.launcher: Fix bug -- if dispose fails, still call dispose on the other
resource.