IO exists!

Ready for review!

Basic framework for the IO subpackage. Still need to add docstrings.
Does it make sense to rename this function `_override_kwarg` and `_overwrite_kwargs` to `_override_kwargs`? That way the naming will be consistent with `ArgumentOverrideWarning`.