Add IO::Path.succ and .prev; move chmod from handle to path

and some other minor IO refactoring
like moving dir()'s logic into IO::Path for readability