define the _IOArgs class
define the _IOArgs class

This doesn't change the public API, but it helps us avoid repeating long
lists of keyword args everywhere, and it also means we get to move some
argument validation up from execution time to construction time. That's
especially important when the caller uses an undefined keyword argument
-- we really want that to throw immediately.

oconnor663/duct,oconnor663/duct.py