First part of S16 rewrite

Features of IO::Spec, IO::Path and IO::Handle will follow