We don't expect "Path Abs" everywhere anymore. The functions
have been made to be more generic. A user can still pass
absolute paths, so we don't lose any safety. However, some
function implementations may be more tricky.
* remove some obsolete functions and error types from HPath.IO.Errors
that are completely unused
* reworked the RecursiveFailure type to contain more information,
so we can use it to programmatically make useful choices
without examining the weakly types IO error attributes (like
'ioGetFileName')
* add isFileName
* add hasParentDir
* add hiddenFile
* add our own openFd version for more control
* small documentation improvements
* add a getDirectoryContents' version that works on Fd
* fix linting warnings
* lift version constraints in benchmark
Also adjust HPath.IO to work with the new API.
'canonicalizePath' was missing, making this function far less reliable.
In order for this to work we have to work around circular imports
with a IO.hs-boot file.